学校の先生は、構造体 foo へのポインターに代入する前に、 NULLを(struct foo *)に変換し続けます。例えば:
struct foo {
// smthg else
struct foo *ptr;
};
struct foo *bar;
bar = (struct foo*)malloc(sizeof(struct foo));
bar->ptr = (struct foo *) NULL;
私を驚かせたのは、彼がその値が NULL であるかどうかをテストする (リンクされたリストが終了したかどうかを確認する) 唯一の場合、彼は次のことを行うことです。
if (aux->ptr != (struct foo *) NULL) {
...
}
エラーなどを防ぐために NULL のサイズを「大きく」するのであれば、その理由を彼に尋ねました。しかし、いいえ、彼は私に言いました(かなり気が進まなかったと思います)、コンパイラによるエラーの可能性を防ぐためでした(wtf?)。それは本当に必要ですか?
編集:
彼が教えている言語は C です。彼はおそらく、C で malloc をキャストする必要がないことを知りません。彼がただ慎重なのか無能なのか知りたい. :P