明示的にmalloc()の戻り値をキャストする必要がありますか?
の戻り値の型はvoid*
なので、
malloc
が返すポインタは
char*
型に暗黙的にキャストされてからtempに代入されますか?この点でスタンダードは何を言いますか?
ポインタ変数がいくつかのstruct型の場合:
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
struct node*
型にキャストせずにtempにメモリを割り当てると、暗黙的にstruct node*
型にキャストされるか、明示的にキャストする必要がありますそれはstruct node*
タイプに?
CコンパイラではなくC++コンパイラでコードをコンパイルする必要がある場合は、キャストが必要です。その結果、私のコードのほとんどは、純粋なCがそれを必要としなくても、明示的なキャストを含みます。私は通常その理由を示すために/ * = C++ = * /とタグ付けします。 –
私が必要とするわけではありませんが、少し後でコードを読むのに役立ちます。 – Xolve
[この質問](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858)も参照してください。 – unwind