gpt4 book ai didi

c - 有必要将 NULL 转换为结构指针类型以在 C 中进行赋值/比较吗?

转载 作者:行者123 更新时间:2023-12-04 11:17:53 25 4
gpt4 key购买 nike

我在学校的老师一直在将 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

最佳答案

回答你的问题:不,没有必要将 NULL 转换为特定的指针类型。编译器对 NULL 进行了特殊处理,并允许将其分配给任何指针类型而不会出现指针类型转换警告。

同样,与 NULL 比较时也不需要转换,或者:

if (aux->ptr != NULL) {

关于c - 有必要将 NULL 转换为结构指针类型以在 C 中进行赋值/比较吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com