2011-06-20 369 views

回答

21

它是一個有符號整數類型,它足夠容納一個指針。

+3

值得指出的是,在32位和64位平臺上,控股指針部分可能會有不同的大小...... – Goz

+1

s/a指針/任何指針/ – ninjalj

+0

只是出於好奇:爲什麼有必要有[u] intptr_t的簽名和未簽名版本? – JohnTortugo

1

它是一個有符號整數類型,保證可以容納void*類型。

爲什麼還有[u]intptr_t?這是因爲:

任何有效的指向void可以被轉換爲intptr_tuintptr_t 和背部與值沒有變化。 C標準 保證指向void的指針可以被轉換爲或指向任何對象類型的指針並返回,並且結果必須與原始指針相比較 。因此,在支持uintptr_t的實現中允許將 直接從char *指針轉換爲uintptr_t

+0

這是從哪裏引用的? – Yotam

+1

你讓我了。這裏:https://www.securecoding.cert.org/confluence/display/c/INT36-C.+Converting+a+pointer+to+integer+or+integer+to+pointer –

相關問題