在定义期间给变量赋值是一种很好的做法。
一个常见的做法是给变量赋值0,指针赋值为NULL。
int p = NULL; // instead of int p = 0;
int *ptr = NULL;
int &ref=p;是否有理由将NULL而不是0赋值给非指针变量类型?int p = NULL代码在Visual中编译,但它似乎不如将其赋值为零的可读性更低。
发布于 2016-02-23 08:32:43
宏NULL是null__指针常量,具有整数类型或指针类型。
使用NULL分配或初始化非指针变量至少会导致其他程序员的问号,并且可能导致编译器失败。
像这样的一行
int a = NULL;不是很好的代码,它会降低代码的可读性。
发布于 2016-02-23 15:06:29
VS 2008将NULL定义为:
/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif如果您正在编写一个C程序并使用:
int i = NULL;会扩展到
int i = ((void *)0);如果有人手动编写该代码,我会非常怀疑他们作为软件开发人员的技能。
因此,我强烈反对使用
int i = NULL;发布于 2016-02-23 16:11:38
空指针不需要为0。符合实现的标准可能如下所示
#define NULL (void*)0x1234第二,空指针必须在比较中比较等于0。因此,实现必须确保hat if ((void*)0x1234)的计算结果为false。
我不知道有任何实现会这样做,但是如果您希望NULL可以与0互换工作,那么您就超出了C(或C++)规范的范围。
https://softwareengineering.stackexchange.com/questions/310826
复制相似问题