心理

当前位置 /首页/完美生活/心理/列表

指针等于0和等于null的区别

指针等于0和等于null的区别

空指针常量,ANSI规定:&ltstdio.h>规定预处理宏NULL 为空指针常量,通常#define NULL 0或(void *)0

误区:有的机器不同类型的指针使用不同的内部表示,例如将字符指针的空指针常量定义为#define NULL ((char *)0),这样的NULL定义对于接受字符指针的函数没有问题,但对于其他类型的指针仍然需要进行显示的转换,本来合法的构造可能会失败,例如FILE *fp=NULL

注意1:NULL只能用做指针,非指针变量中不能用NULL

注意2:运行时的整数0转化为指针不一定是空指针,只有常量整数0才能保证空指针

你可以这样理解,NULL 是关键字,如果将指针的值设置为null,即代表当前指针为空指针,其不指向内存中的任意地址,而当指针设置为0时,其实质是在内存中申请一片空间,将0放入,然后将0的内存地址赋给指针,指针使用前都要初始化,而许多程序员在申明指针或者初始化时都喜欢赋值null,这是良好的编程习惯,因为如果你不给指针初始化,指针会随机的指向内存中的任何一个地址,这就是俗称的“指针指飘了”,在现在的计算机系统中是没什么的,但是早期的计算机系统中轻则内存泄漏,重则系统崩溃(现在的操作系统一般都会由系统或者编译器报错的)

TAG标签:指针 等于 #