今日、私は、ページに達する167の言語(第二版ブライアンW.カーニハン&デニスM. Ritchie氏を)プログラミングCをし、著者は、私はキャストしなければならないと言うことがわかりましたmalloc
。これは本の一部です:
7.8.5ストレージ管理
関数mallocおよびcallocは、メモリのブロックを動的に取得します。
void *malloc(size_t n)
初期化されていないストレージのnバイトへのポインタを返します。要求が満たされない場合はNULLを返します。
void *calloc(size_t n, size_t size)
指定されたサイズのn個のオブジェクトの配列に十分な空き領域へのポインタを返します。要求が満たされない場合はNULLを返します。ストレージはゼロに初期化されます。mallocまたはcallocによって返されたポインターは、問題のオブジェクトに対して適切な配置になっていますが、次のように適切な型にキャストする必要があります
int *ip; ip = (int *) calloc(n, sizeof(int));
私はすでにそれを知っているmalloc
(とその家族)戻り型void *型を、そしてなぜキャストへの良好な説明がありますmalloc
。
しかし、私の質問は次のとおりです。なぜこの本は私がそれをキャストするべきだと言っているのですか?
malloc
ください-必要な場合を除いて-すべきではありません-を除いて... AGGGHHHHHH !!!!! :-)