ポインター型との間で変換
値の 1 種類のへのポインターは別の型へのポインターに変換できます。ただし結果はストレージの異なる型のアライメント要件とサイズに対して定義されている場合があります。オブジェクトへのポインターはオブジェクトへのポインターを変更せずに戻ることができますがこの型または同じように厳密なストレージの配置を必要とすると再び変換します。
void へのポインターは制限や情報を失わずの型へのポインターとの間で変換できます。結果が元の型に戻す場合元のポインターを復元します。
ポインターが同じ型または追加の修飾子を持つときに別のポインターに変換されますが新しいポインターは新しい修飾子を付加制限を除きと同じです。
ポインター値は整数値に変換できます。変換のパスはポインターのサイズと次の規則に従って整数型のサイズによって決まります :
ポインターのサイズが整数型のサイズに以上の場合変換の符号なしの値と同じように動作します。ただしフローティング値に変換できません。
ポインターが整数型よりも小さい場合整数型と同じサイズのポインターに変換されますが整数型に変換されます。
逆に整数型は次の規則に従ってポインター型に変換することがあります :
整数型がポインター型と同じサイズの場合ポインターを整数値 (符号なし整数) として扱いますだけです。
整数型のサイズがポインター型のサイズが異なる場合整数型はテーブル 符号付き整数型からの変換 と 符号なし整数型からの変換 に説明した変換のパスを使用してポインターのサイズに最初に変換されます。はポインター値として扱われます。
void* 型をキャストして代入によって任意の型のポインターと比較して入力した値 0 またはこのような式のキャストによる整数定数式は変換できます。これにより同じ型の別の null ポインターの場合このが null ポインターは関数またはオブジェクトに任意のポインター型と同じに null ポインターが生成されます。0 以外の整数定数がポインター型に変換できますが結果は移植できません。