常量指针,指针常量,野指针

在我看来,不必太纠结于常量指针和指针常量的汉语名称,一定要记住用法就好了。

记有一指针,p表示地址,*p表示值。

1、常量指针

书写方式有const int *p或者int const *p。

在这种情况之下,const始终在*p之前,也就是说const(常量)修饰*p(指针的值)。*p不能修改,就是说该指针指向的值不能修改。

在这种情况之下,*p是只读的。

#include <iostream>
using namespace std;

int main()
{

 int a = 10;
 int const *p = &a;
 cout<<a<<endl;
 cout<<*p<<endl;
 return 0;
}

如果修改*p的值,会报错:  assignment of read-only location'*p';
注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值。在上例中可以通过改变a来改变*p的值。

2、指针常量

书写方式是int * const p;

const p表示地址不可改变,也就是说指针常量的地址不可修改。

int a = 10;

int * const p = &a;

此后p始终指向a,不可修改。


3、野指针

迷途指针,也被称为野指针或悬浮指针,是指将delete 用于指针(从而释放它指向的内存),但没有将它设置为空时引发。如果随后你在没有重新赋值的情况下使用该指针,后果将是不可预料的。

上例中在释放内存后,要将地址指向NULL。

delete p;

p = NULL;

为了安全,这是很有必要的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值