C++指针

目录

1.指针;

2.数组的指针;

3.未初始化的指针和非法指针;

4.NULL指针;


1.指针;

  指针本身就是一个变量,其符合变量定义的基本形式,它存储的值是地址。对于一个基本类型T,T* 是“到T的指针”类型,一个类型为T*的变量能够保存一个类型T的对象的地址。

  通过一个指针访问它所指向的地址的过程称为间接访问或者引用指针。这个用于执行间接访问的操作符是单目操作符*。
 

int a = 1;
//指针定义
int* c = &a;  
cout<<c<<endl;   //输出a变量的地址
//间接访问
cout<<(*c)<<endl; //等同于cout<<a<<endl;

2.数组的指针;

数组的指针 T(*t)[] :一个指针,指向一个数组。

int c[4] = {1,2,3,4};
int(*b)[4];
b = &c;  //数组的个数一定要匹配
//注意,[]的优先级比较高


for(unsigned int i = 0;i<4;i++)
{
	a[i] = &(c[i]);
}

cout<<(*b)[3]<<endl;  //b是指针,先间接访问取值得到数组,然后取数组下标

3.未初始化的指针和非法指针;

int* a;
*a = 12;//错误

上述操作并没有对指针a进行初始化,也就是说我们并不知道a最终会指向哪里。运气好的话定位到一个非法地址(程序不能访问的地址),程序会出错从而终止。最坏的情况下,a定位到了一个可以访问的地址,这样我们就无意间修改了它,这样的错误难以捕捉,引发的错误与原先用来操作的代码毫不相干,我们根本无法定位。

用指针进行间接访问之前,一定要确保它已经初始化,并且被恰当的赋值。

4.NULL指针;

NULL指针是一个特殊的指针变量,表示不指向任何东西。

int* a = NULL;

对于一个指针,如果已经知道将被初始化为什么地址,那么请给他赋值,否则把它设置为NULL,这样可以有效避免不可确定性访问的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值