在C中,数组指针还是用作指针?我的理解是,数组只是指向值序列的常量指针,当您在C中声明数组时,您要声明一个指针,并为它所指向的序列分配空间。但这让我感到困惑:下面的代码:char y[20];char *z = y;printf("y size is %lu\n", sizeof(y));printf("y is %p\n", y);printf("z size is %lu\n", sizeof(z));printf("z is %p\n", z);当使用Apple编译时,GCC给出了如下结果:y size is 20y is 0x7fff5fbff930z size is 8z is 0x7fff5fbff930(我的机器是64位,指针是8字节长)。如果‘y’是一个常量指针,为什么它的大小为20,就像它所指向的值序列一样?在编译时,变量名‘y’是否被内存地址所取代?那么,数组是否是C中的某种语法糖,在编译时只被翻译成指针呢?
3 回答
动漫人物
TA贡献1815条经验 获得超10个赞
sizeof
char[]
sizeof(char)
sizeof
int
):
int y[20];printf("number of elements in y is %lu\n", sizeof(y) / sizeof(int));
sizeof
- 3 回答
- 0 关注
- 450 浏览
添加回答
举报
0/150
提交
取消