ポインター変数のプログラムでは、次のようによく使用します。
float *x;
x=(float*)malloc(a*sizeof(long int));
(float*)
の前にmalloc
?を使用する理由を知りたいです。
ポインター変数のプログラムでは、次のようによく使用します。
float *x;
x=(float*)malloc(a*sizeof(long int));
(float*)
の前にmalloc
?を使用する理由を知りたいです。
Malloc は void へのポインターを返します。
(float*)
void へのポインタから float へのポインタへのキャスト
C ではこれは必要ありませんが、C++ では必要です。そのため、コードを C++ コンパイラと互換性を持つようにすることを推奨する人もいます。
しかし、あなたはそれをする必要はありません。(一部の C ファンは反対しています)
malloc
void
でやりたいことに関連するものには使用できないへのポインタを提供しますfloat
。返されたメモリ位置に割り当てられた変数を使用できるようにするには、変数を にキャストして、float*
そのポインターを逆参照し、 として使用できるようにする必要がありますfloat
。
ただし、質問を書いたように、へのポインタとして宣言していないため、へのポインタとして宣言していないため、への戻り値をキャストしてから、malloc
にfloat*
割り当てる前にすぐに逆参照する必要があります。x
x
float
編集:コメンターが指摘したように、明示的なキャストはC ではなく C++ でのみ必要です。