提示:我们要区分清楚什么是野指针,什么是空指针,这篇文章介绍什么是空指针,野指针的详解请见博客【C语言】野指针。
一,什么是空指针
每一个指针类型都有一个特殊的值-----“空指针”。空指针与同类型的其他指针值都不同,它“保证与任何对象或函数的指针值都不相等”,也就是说空指针不会指向任何地方,它不是任何对象或函数的地址。简单点说,一个指针不指向任何数据,我们就称之为空指针,空指针用NULL表示。
int* p=NULL;
我们用空指针NULL来初始化指针变量。
二,特别说明
1.我们常用的动态内存开辟函数,如malloc,calloc,realloc,如果它们开辟动态内存失败就会返回空指针,所以动态开辟函数后,都要判断是否开辟成功。
2.空指针不等同于未初始化的指针,未初始化的指针通常指野指针,即空指针不是野指针,野指针可以指向任何地方(乱指一气),可能会造成非法访问内存地址,而空指针它不指向任何对象。
3.在源码中用来表示空指针的常量是整数0,NULL使指针指向0,大多数系统中都将0作为不被使用的地址(所以上面才说NULL不指向任何数据),但也有些系统会使用0,任何把NULL定义为其它值,所以也不能所NULL就等于0.