對于所有數(shù)據(jù)類型,所有數(shù)據(jù)指針在一個平臺中的大小是否相同?是char*,int*,long*甚至是long long*同樣大小的(在給定的平臺)?
3 回答

喵喔喔
TA貢獻1735條經(jīng)驗 獲得超5個贊
它們不能保證大小相同,盡管在我經(jīng)驗豐富的平臺上通常都是這樣。
C 2011 在線選秀:
6.2.5類型
...
28指針void
應具有與指向字符類型的指針相同的表示和對齊要求。48)類似地,指向兼容類型的合格或非限定版本的指針應具有相同的表示和對齊要求。所有指向結(jié)構(gòu)類型的指針都應具有相同的表示和對齊要求。所有指向union類型的指針都應具有相同的表示和對齊要求。指向其他類型的指針不需要具有相同的表示或?qū)R要求。
48)相同的表示和對齊要求意味著可互換性作為函數(shù)的參數(shù),函數(shù)的返回值和聯(lián)合的成員。

翻過高山走不出你
TA貢獻1875條經(jīng)驗 獲得超3個贊
不必要。該標準不保證sizeof(double*) == sizeof(int*)
。例如,假設處理器具有兩個具有不同寬度的地址總線(如在一些哈佛架構(gòu)處理器上),它可以具有不同大小的指針。

不負相思意
TA貢獻1777條經(jīng)驗 獲得超10個贊
請注意C標準所說的內(nèi)容 - 正如John Bode所引用的那樣。另請注意,C標準根本沒有說明函數(shù)指針的大小。
POSIX標準規(guī)定了一些額外的要求:
2.12.3指針類型
所有函數(shù)指針類型應與void指向的類型指針具有相同的表示形式。將函數(shù)指針轉(zhuǎn)換為void *不得改變表示。這種轉(zhuǎn)換產(chǎn)生的void *值可以使用顯式轉(zhuǎn)換轉(zhuǎn)換回原始函數(shù)指針類型,而不會丟失信息。
注意:ISO C標準不要求這樣,但它是POSIX一致性所必需的。
- 3 回答
- 0 關(guān)注
- 497 瀏覽
添加回答
舉報
0/150
提交
取消