在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個贊
sizeofchar[]sizeof(char)sizeofint):
int y[20];printf("number of elements in y is %lu\n", sizeof(y) / sizeof(int));sizeof
- 3 回答
- 0 關注
- 490 瀏覽
添加回答
舉報
0/150
提交
取消
