如果你在这个判断前面只是free(p),而没有置为null,这个判断仍成立,执行里面的就会出错,因为p指向的地址的内容已经被清空,得不到程序想要的结果 所以在释放一个指针free(p);和p=null;是两者缺一不可
其中int*p = NULL的意思是定义一个指针变量p其指向的变量存储的是整形的数据:在定义时把p的值付成0x00000000而不是把*p的值附成0x00000000,这个过程叫做初始化,是在编译的时候进行的。 接下来看以下两行代码: int *p; p = NULL;这就不一样了这里只是知道定义了一个指针p,但是p的值未知,也就是说p保存的...
1. int *p = NULL; 代表定义一个指向整型变量的指针p,然后p的值设为NULL,也就是设为0;用另一种方式说,就是对一个刚定义的指向整型变量的指针,赋初始值,让其指向0地址。 2. *p = NULL; 代表对一个由指针p指向的变量(什么类型,不知道),赋值为0,是将那个变量赋值为0。 我们可以先看下面的代码: int ...
当编译器预处理程序遇到NULL时,它会被替换为0或(void*)0。当指针被初始化为NULL时,它不可以计算,这样可以避免对未初始化的指针进行解引用(避免用*运算符),从而避免程序崩溃或产生未定义的行为。NULL这种宏定义的方式允许程序员在代码中使用NULL来初始化或比较指针,但是正如上面所说的,不能用来计算。当然,作为宏...
楼主 其实很简单,例如你定义一个int a;然后把&a的带入你的函数中,函数的形参为int *p;在函数中把*p=null,不过最好是用宏定义,把null定位0;这样a变量的地址所指向的值就变为0了 你要是有什么不懂得可以找我
int *a;//定义一个指针a=NULL;//让这个指针指向空a =0;//这样也是让一个指针指向空的方式 注意:void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容的操作.必须先转成别的类型的指针才可以把内容解释出来....
C语言中int *p=NULL意思是:C语言中p里面是随机值,在int *p=NULL,这个p是有值的,为NULL;int *p=NULL指向一个空指针,等于 int *p=0; NULL等于0;可以随时让这个p指向其他地址。定义指针,将它初始化为NULL,这样做编程更规范。
空指针NULL: 在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示。例如: NULL 是一个宏定义,在stdio.h被定义为: 那么我们来看看什么是空指针? [6.3.2.3-3] If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed ...
int ***,也即(int **) *,是指向int**类型的指针,也就是指向指针的指针的指针; …我想你应该懂了 struct xxx *,是指向struct xxx类型的指针; 其实,说这么多,只是希望大家在看到指针的时候,不要被int ***这样的东西吓到,就像前面说的,指针就是指向某种类型的指针...
对于指针变量pa来说,首先它是一个变量,因此在内存中需要有一个空间来存储这个变量,这个空间的地址就是0x11223348; 其次,这个内存空间中存储的内容是变量a的地址,而a的地址为0x11223344,所以指针变量pa的地址空间中,就存储了0x11223344这个值。 这里对两个操作符&和*进行说明: ...