开发者社区 问答 正文

C中的char数组和char指针有什么区别?

我试图理解C中的指针,但目前对以下内容感到困惑:

char *p = "hello" 这是一个从h开始指向字符数组的char指针。

char p[] = "hello" 这是一个存储hello的数组。

将这两个变量都传递给此函数有什么区别?

void printSomething(char *p) { printf("p: %s",p); }

展开
收起
保持可爱mmm 2020-01-16 16:37:10 494 分享 版权
1 条回答
写回答
取消 提交回答
  • char并且char[] 是不同的类型,但并非在所有情况下都立即可见。这是因为数组会衰减为指针,这意味着,如果在需要类型char[]的地方提供了类型的表达式char,则编译器会自动将数组转换为指向其第一个元素的指针。

    您的示例函数printSomething需要一个指针,因此,如果您尝试将数组传递给它,如下所示:

    char s[10] = "hello"; printSomething(s); 编译器假装您编写了以下代码:

    char s[10] = "hello"; printSomething(&s[0]); 问题来源于stack overflow

    2020-01-16 16:37:31
    赞同 展开评论