C语言 int * p; p=NULL;

2025-04-24 06:06:20
推荐回答(4个)
回答1:

1. 写0也可以,但是写NULL看起来更清楚
2. stdlib.h中已经定义了NULL,没必要再写
3. 有必要。如果不给p赋值NULL,那么p的值是undefined, 不一定是多少,有可能指向已经使用的内存。这时候如果给*p赋值,可能会造成破坏。如果p=NULL,就不可能给*p赋值,减少误操作的机会。

回答2:

1:0和NULL不一样,0可以只数字0,也可以指字符0,NULL指的是空。
2:p=NULL;这一句的意思就是令P指向空地址
3:如果最后不写p=NULL;的话就要释放p.像这样free(p);,不这么做的话就有可能出现指针乱跳转的危险

回答3:

关于无效值在不同的环境有不同的定义,大多是0,而有的是0xFFFFFFFF,
编译代码换了环境后而通过宏定义NULL,在利用NULL的代码中就不用再修改,而是直接修改宏定义

回答4:

这是指针啊,如果是直接将0赋值给p也可以直接写int p;p=0;