/**
* 1. 未初始化和非法的指针
* 例子:
* int *a; // 注意: a这里指向哪里?不确定会指向哪里 这里会发生什么
* *a = 12;
* 运气好的话:定位到一个非法地址,程序会出错,从而终止。
* 最坏情况:
* 定位到一个可以访问的地址,无意修改了它,
* 这样的错误难以捕捉,引发的错误
* 可能与原先用于操作的代码完全不相干
*
* NULL指针
* 一个特殊的指针变量,表示不指向任何东西。
* 如:
* int* a = NULL;
*
* NULL指针的概念费用有用:
* 它给了一种方法,来表示特定的指针目前未指向任何东西。
*
* 使用的注意事项:
* 1. 对于一个指针,如果已经知道将被初始化什么地址,那么请赋值
* 给它这个地址值,否则赋给NULL
* 2. 在间接引用之前,需要判断指针是否为NULL
*
*
* 杜绝野指针
* 指向“垃圾”内存的指针。if等判断对它们不起作用,因为没有设置NULL
*
* 一般有三种情况:
* 1. 指针变量没有初始化
* 2. 已经释放不用的指针没有置为NULL,如delete和free之后的指针
* 3. 指针操作超越了变量的作用范围
*
* 指针使用的注释事项:
* 没有初始化的,不用的或者超出范围的指针请把值置为NULL
*/
#include<iostream>
using namespace std;
int main(int argc, char const *argv[])
{
/* code */
// NULL的使用
int a = 123;
int* pA = NULL;
pA = &a;
if (pA!=NULL) {
cout<<(*pA)<<endl;
}
pA = NULL;
return 0;
}
输出如下:
123