021-C++中野指针

/**
 * 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值