我在学校的老师一直将NULL转换为(struct foo *),然后再将其分配给指向结构 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