BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ voidポインタをオブジェクトへのポインタ型に変換できますか。

 void *型のポインタを、オブジェクト型へのポインタに型変換について、以下の例で考えましょう。

char ary[5]; void *vp = ary; /* voidポインタ:vp = &ary[0]と同じ */ char *cp; /* charへのポインタ */


C
 型変換は暗黙のうちに行われます。したがって、

cp = vp;

によって、charへのポインタに対して、そのままvoidポインタの値を代入できます。

C++
 キャストによる明示的な型変換が必要です。したがって、

cp = (char *)vp;

としなければなりません。


■ 根拠 ■
標準C §6.2.2.3 Pointers
標準C99 §6.2.2.3 Pointers
標準C++ §4.10 Pointer conversions

戻る

BohYoh.comロゴ