共用方式為


指標類型的轉換

一種值類型的指標可以轉換成另一種類型的指標。 不過,由於儲存區中不同類型會有不同的對齊需求和大小,因此結果可能會是未定義。 物件指標可以轉換成類型需要較不嚴格或同等嚴格之儲存對齊的物件指標,並且在不經變更的情況下轉換回原物件指標。

void 的指標可以與任何類型的指標來回轉換不受限制,也不會造成資訊遺失。 如果結果轉換回原始類型,則原始指標會復原。

如果指標轉換成具有相同類型但具有不同或額外限定符的另一個指標,新指標會與舊指標相同,但新限定符所施加的限制除外。

指標值也可以轉換成整數值。 根據下列規則,轉換路徑取決於指標的大小和整數類資料類型的大小:

  • 如果指標的大小大於或等於整數類型的大小,指標的行為就像轉換中的不帶正負號值,不同之處在於它無法轉換成浮點值。

  • 如果指標小於整數類資料類型,則指標會先轉換成與整數類資料類型具有相同大小的指標,然後再轉換成整數類資料類型。

相反地,根據下列規則,整數類資料類型可以轉換成指標類型:

  • 如果整數類資料類型與指標類型的大小相同,則轉換只會導致將整數值視為指標 (不帶正負號的整數)。

  • 如果整數類型的大小與指標類型不相同,則會先使用從帶正負號整數類型的轉換從不帶正負號整類型的轉換中所提供的轉換路徑,將整數類型轉換成指標的大小。 然後,它會被視為指標值。

具有值 0 的整數常數運算式,或這類轉換成類型的 void* 運算式,可以透過類型轉換、指派或與任何型別的指標進行比較來轉換。 此作業會產生等於相同類型之另一個 Null 指標的 Null 指標,但不等於函式或物件的任何指標。 常數 0 以外的整數可以轉換成指標類型,但結果無法移植。

另請參閱

指派轉換