在數(shù)組char指針的情況下,'數(shù)組名稱'是什么意思?在我的代碼中: char *str[] = {"forgs", "do", "not", "die"};
printf("%d %d", sizeof(str), sizeof(str[0]));我得到了輸出12 2,所以我懷疑是:為什么會有區(qū)別?這兩個str和str[0]是字符指針,對不對?
3 回答

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊
在大多數(shù)情況下,數(shù)組名稱將衰減為其第一個元素的地址值,并且類型與指向元素類型的指針相同。所以,你會期望裸str
值的值等于&str[0]
指向指針的類型指針char
。
但事實并非如此sizeof
。在這種情況下,數(shù)組名稱保持其類型sizeof
,這將是4指針的數(shù)組char
。
返回類型sizeof
是a size_t
。如果您有C99編譯器,則可以使用%zu
格式字符串來打印返回的值sizeof
。

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗 獲得超8個贊
它16 4
在我的電腦上,我可以解釋一下:str
是一個數(shù)組char*
,所以sizeof(str)==sizeof(char*)*4
我不知道你為什么會12 2
這樣。
- 3 回答
- 0 關(guān)注
- 670 瀏覽
添加回答
舉報
0/150
提交
取消