在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中的某种语法糖,在编译时只被翻译成指针呢?
动漫人物
相关分类