void* への変換

C ポインタ ーは、必ずしも、型 int と同じサイズではありません。関数に渡されるポインター引数は、その関数によって期待される正しい型が必ず 渡されるように、明示的にキャストでなければなりません。 C での汎用オブジェクト・ポインターは void* ですが、汎用関数ポインターはあ りません。

オブジェクトを指すポインター (型で修飾されることがあります) は、同じ const または volatile 修飾を保持しながら、void* に変換することができます。

以下の表に、左方オペランドとして void* を持つ許容割り当て変換を示します。
表 1. C での void* に関する有効な割り当て変換
左方オペランドの型 許可される右方オペランドの型
(void*)
  • 定数 0
  • オブジェクトを指すポインター。このオブジェクトは、不完全型でもかまいません。
  • (void*)