猿问

C中char数组与char指针的区别是什么?

C中char数组与char指针的区别是什么?

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

  • char *p = "hello"

    这是指向字符数组的char指针,从h.

  • char p[] = "hello"

    这是一个存储你好.

当我把这两个变量都传递到这个函数中时,有什么区别呢?

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


倚天杖
浏览 1915回答 3
3回答

阿波罗的战车

char*和char[] 是不同的类型,但并非在所有情况下都是显而易见的。这是因为数组衰变成指针,意思是如果类型的表达式char[]提供类型之一的char*编译器会自动将数组转换为指向其第一个元素的指针。示例函数printSomething希望得到一个指针,因此,如果您试图向它传递一个数组,如下所示:char s[10] = "hello";printSomething(s);编译器假装您这样写:char s[10] = "hello";printSomething(&s[0]);
随时随地看视频慕课网APP
我要回答