你要想给p的地址赋值0可以,但是不能,在它指的空间赋值
你要想给p指向的空间赋值可以,但是,它的地址不能是0
两个例子:
file1.c #include<stdio.h> void main(){ int *p = &i; p = NULL; p = 0; p = '\0'} file2.c #include<stdio.h> void main(){ int i = 23; int *p = &i; *p = NULL; *p = 0; *p = '\0';}
因为大多数编译器规定,内存为0的地方不能写操作。很多时候把定义一个指针的p赋值为NULL是为了,防止它乱指向。
所以:int *p=NULL;
*p=2;
就会出错的。
int *p=0 定义指针p指向的内容为整型并 初始化为空
void *p 定义指针p指向的内容为空类型 没有初始化