我试图理解C中的指针,但目前对以下内容感到困惑:
char *p = "hello" 这是一个从h开始指向字符数组的char指针。
char p[] = "hello" 这是一个存储hello的数组。
将这两个变量都传递给此函数有什么区别?
void printSomething(char *p) { printf("p: %s",p); }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
char并且char[] 是不同的类型,但并非在所有情况下都立即可见。这是因为数组会衰减为指针,这意味着,如果在需要类型char[]的地方提供了类型的表达式char,则编译器会自动将数组转换为指向其第一个元素的指针。
您的示例函数printSomething需要一个指针,因此,如果您尝试将数组传递给它,如下所示:
char s[10] = "hello"; printSomething(s); 编译器假装您编写了以下代码:
char s[10] = "hello"; printSomething(&s[0]); 问题来源于stack overflow