const int * p 与int * const p的区别

(1)

const 修饰的指针
const int* p;
一旦p指向一块内存空间,p指向的内存空间的值无法通过*p进行修改。

const int* p;
int a=1,b=2;
p=&a;

可以看到此时程序正常运行。

当进行对指针p指向的内存的值进行修改时编译器报错,因为const修饰int类型的指针p限制了指针p修改值的操作,通过变量a仍然可以修改a的值。

可以看到此时无法通过指针p修改a的值,编译器说*p是只读的,不可以修改。

下面我们用a修改一下看看

可以看到const int* p只限制了指针p修改值的能力,对a并无影响,由于指针p与变量a共用一片内存空间,故const修饰的作用是限制通过指针p修改变量的值。

看看const int *p可不可以修改指向的内存空间呢?答案是肯定的

(2)


int* const p使用时必须在定义时使其指向一片内存空间之后指向的内存空间不可变

 如

 可以看到指针p此时指向a,这时我们修改p使其指向b看看会发生什么,

 编译器报错说p是只读的无法修改 

那我们通过指针p修改一下变量a的值看看能不能行?

可以看到int * const p可以通过指针p修改变量的值,但无法修改p指向的变量 

综上所述,const int * p ,const修饰的是*p,故*p无法修改但是p可以修改;int * const p,const 修饰的是p故无法修改p但是可以修改*p。

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值