发布网友 发布时间:2022-05-21 05:41
共5个回答
热心网友 时间:2023-10-16 04:00
所有类型的数组的数组名都是一个地址常量,表示数组首元素的地址,不仅仅结构体数组如此。
比如:
char carr[2];
carr的值等于&carr[0]。
int iarr[3];
iarr的值等于&iarr[0]。
可以用如下代码验证这点:
#include <stdio.h>
int main()
{
char carr[2];
int iarr[3];
printf("carr=%p,&carr[0]=%p\n",
carr,&carr[0]);
printf("iarr=%p,&iarr[0]=%p\n",
iarr,&iarr[0]);
return 0;
}
这是我运行的截图:
热心网友 时间:2023-10-16 04:00
这个一点不矛盾。热心网友 时间:2023-10-16 04:01
您好,很高兴回答您的问题。热心网友 时间:2023-10-16 04:01
任何实体(变量、结构、类对像实例及其数组)名都代表地址,在编译时,编译器会创建一张表,用于映射实体标识符与地址,以便最终用地址替换实体名。我不知道“单独的结构体不是…”出处以及上下文。热心网友 时间:2023-10-16 04:02
数组名即该数组首个元素的地址
与结构体名不是结构体的地址不矛盾
一个是数组,一个是变量,不是一个概念,并不矛盾