C语言 int * p; p=NULL;

1.为什么不写p=0;?
2.为什么有的人还要#define NULL 0;?
3.有这个必要吗?(*p还是不能赋值)

1. 写0也可以,但是写NULL看起来更清楚
2. stdlib.h中已经定义了NULL,没必要再写
3. 有必要。如果不给p赋值NULL,那么p的值是undefined, 不一定是多少,有可能指向已经使用的内存。这时候如果给*p赋值,可能会造成破坏。如果p=NULL,就不可能给*p赋值,减少误操作的机会。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-26
1:0和NULL不一样,0可以只数字0,也可以指字符0,NULL指的是空。
2:p=NULL;这一句的意思就是令P指向空地址
3:如果最后不写p=NULL;的话就要释放p.像这样free(p);,不这么做的话就有可能出现指针乱跳转的危险
第2个回答  2013-04-26
关于无效值在不同的环境有不同的定义,大多是0,而有的是0xFFFFFFFF,
编译代码换了环境后而通过宏定义NULL,在利用NULL的代码中就不用再修改,而是直接修改宏定义
第3个回答  2013-04-26
这是指针啊,如果是直接将0赋值给p也可以直接写int p;p=0;
第4个回答  2013-04-26
1. 这是习惯写法。一般都把NULL定义成(void *)0,如果直接p=0;编译器会告警,说把一个整型赋给一个指针型。

2. NULL一般都用于表示空指针,p=NULL就表示把p指向一个无效空间地址
3. p指向NULL的无效空间地址后,对这个地址赋值就是非法的。只有把p指向一个有效地址空间才可以对它指向的内存写入内容,即可执行*p=XX操作。
相似回答