C++学习记录18--指针为NULL
2017-11-07 14:00
183 查看
首先来看下,NULL是一个宏,C++里将其定义为
#define NULL 0
虽然编译器在数值处理上是一致的,但为了提高程序的可读性及方便移植 还是应该区分好,比如:
char *ptr=NULL char a='\0'; char b=0;
很多时候我们需要标明“这个指针当前为无效指针,它不指向任何可以使用的内存空间”,因为不能在指针外附加一个标志位,所以就需要设定一个特别的值,当指针的数值是这个值时,我们就认为这个指针当前是无效指针
因为内存从0开始的一段区域正常情况下是不允许读写的,所以我们规定,“当指针数值为0时,也就是它指向内存地址0时,这个指针就是不正常的指针,也就是我们所要声明的“该指针当前无效””。
为了明示这个意义,通常使用#define NULL 0语句来将指针与NULL比较
如果你觉得这是多此一举,那大多数#define都是多此一举
程序可读性大大提高,这个意义很重要
NULL的出现是一种约定俗成,事实上它不是C语言中的关键字;把一个指针赋值为NULL,通常的说法是“将指针悬空”。这样,指针就无法再进行任何数据访问了。编程工作中有一类比较容易犯的错误–指针地址未进行正确的更新赋值就加以使用,这往往会造成很严重的后果(对内存区进行错误的涂抹)。所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为NULL,待到再度使用时,重新对其赋值以及进行指针类型转化。
注意,指向NULL的指针同样也未初始化,这时使用指针会造成程序奔溃
相关文章推荐
- C++学习笔记18——指向函数的指针
- 【C/C++学习】之十六、关于空指针NULL、野指针、通用指针
- C++学习记录之函数返回值为指针的问题
- C++中指针学习记录
- 【C/C++学习】之十六、关于空指针NULL、野指针、通用指针
- C/C++学习笔记18:指针数组和数组指针
- C++学习之路指针记录笔记(一)
- C++学习笔记之指向函数的指针
- C/C++中关于地址、指针和引用变量的学习笔记(九) : 内存结构
- C++ 学习笔记(四)(数组和指针)
- c++ STL 学习记录 草稿。
- c++学习--利用指针返回多个值
- C++学习日记8——类对象和类指针的区别
- 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用
- c++ 学习记录
- 【菜鸟C++学习笔记】19.this指针
- C/C++学习笔记:指针与二维数组
- 指针学习记录
- C++学习笔记:C的继承与超越——指针与引用
- GDI+ 学习记录(18) 闭合曲线 - ClosedCurve