用0给指针变量赋值

可以用0给指针变量赋值吗
用NULL赋给指针变量前先要
define NULL 0吗?

关于 指针变量 int *p;
有两个概念。一是指针自己,指针自己的单元,用来存放它要指向的数据的地址,另一个是被指向的数据存放单元。

要分清,你打算给谁赋值,你打算给被指向的数据存放单元赋值,还是给指针自己赋值。

我想,你要给被指向的数据存放单元赋值。

刚声明了 int *p; 的时候, 这个指针有了自己的单元,可用来放地址,但这时,这个单元里,并无地址。
所以,在向“被指向的数据存放单元赋值”前要初始化,给它一个地址:

int *p;
int a;
p = &a;
上面把a的地址给了指针,存放在“指针自己的单元”
好了,初始化完成了,可以给被指向的数据存放单元赋值了
*p = 0;
printf("%d\
",*p); // 打出结果。

能不能赋NULL ? 在你没有确认NULL是什么以前,答复是“不能!”
NULL是宏,<stdio.h> 在不同行定义了:
#ifndef NULL
#define NULL
0
#define NULL
((void *)0)
随程序执行路线不同,定义不同

为确保 NULL 是0, 要在头文件之后 加
#define NULL
0
覆盖掉老定义。

编译器也许允许你未初始化指针便可用 *p = ...。从语法说是错的(会有警告错误)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-01
通常NULL在编译环境里已经被定义,你可以直接用。
使用NULL而不使用0,是为了方便 程序阅读。这是个好习惯。
多次一举不是编程好手讲的话。
建议楼主养成好的编程习惯,有疑问可以问我。我有多年的编程经验的。
第2个回答  2013-12-01
在C/C++环境下,0可以赋给任意类型的指针。
在头文件stdio.h(C++ cstdio) 中已将NULL定义为0,不需要另行定义。
第3个回答  2013-12-01
在C/C++, 直接设为0就对了.
很多人喜欢写NULL, 其实是多此一举.
相似回答
大家正在搜