亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在C中,數組指針還是用作指針?

在C中,數組指針還是用作指針?

C C++
臨摹微笑 2019-07-02 10:30:29
在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)是1),因此sizeof正好給出了元素的數量。為了在一般情況下得到元素的數量,一個常見的成語是int):

int y[20];printf("number of elements in y is %lu\n", sizeof(y) / sizeof(int));

為指針sizeof提供原始指針類型占用的字節數。


查看完整回答
反對 回復 2019-07-02
  • 3 回答
  • 0 關注
  • 490 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號