为了账号安全,请及时绑定邮箱和手机立即绑定

const int *p 无法改变值的问题

老师在这堂课上讲无法通过这样的方式进行值的改变,是为什么呢?

int i=30;

const int *p=i;

*p=50;//这里是不可以的,

i=50;//这里却是可以的,这是为什么呢?不是说*p所指向的值无法修改吗?

正在回答

1 回答

你要理解变量类型的重要性。

p的类型是指向const int的指针,如果你解引用这个指针的话,得到的会是const int类型。p的类型决定了这样的性质,这性质与p到底指向谁是无关的。

所以即使p指向的是个非const的int对象,但如果你通过p来访问所指的内容的话,这内容还是会被当作const的。就是说你无法通过*p来修改它,所谓的“*p的值无法修改”就是这个意思。

当然 i 本身是普通的int,自然可以通过 i 来任意修改了。


故const int指针可以指向const int对象,也可以指向普通的int对象。虽然普通int可以被修改,但不修改它自然也没什么问题。可反之,普通int指针就只能指向普通的int对象。如果它能够指向const int的话,就意味着你可以通过这个指针来修改所指的const int的内容,这显然是不合理的。

1 回复 有任何疑惑可以回复我~
#1

SAHADEV 提问者

非常感谢!
2015-07-12 回复 有任何疑惑可以回复我~
#2

SAHADEV 提问者

讲的有道理,不过还需要好好的消化吸收一下
2015-07-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

const int *p 无法改变值的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信