在数组char指针的情况下,'数组名称'是什么意思?

在数组char指针的情况下,'数组名称'是什么意思?

在我的代码中:

 char *str[] = {"forgs", "do", "not", "die"};
 printf("%d %d", sizeof(str), sizeof(str[0]));

我得到了输出12 2,所以我怀疑是:

  1. 为什么会有区别?

  2. 这两个strstr[0]是字符指针,对不对?


Qyouu
浏览 649回答 3
3回答

慕哥6287543

在大多数情况下,数组名称将衰减为其第一个元素的地址值,并且类型与指向元素类型的指针相同。所以,你会期望裸str值的值等于&str[0]指向指针的类型指针char。但事实并非如此sizeof。在这种情况下,数组名称保持其类型sizeof,这将是4指针的数组char。返回类型sizeof是a size_t。如果您有C99编译器,则可以使用%zu格式字符串来打印返回的值sizeof。

婷婷同学_

它16 4在我的电脑上,我可以解释一下:str是一个数组char*,所以sizeof(str)==sizeof(char*)*4我不知道你为什么会12 2这样。
打开App,查看更多内容
随时随地看视频慕课网APP