关于常量指针的问题

zqt2121 2017-12-03 10:25:32
我这样写为什么没报错呢,,而且运行后p的值也改了。。。,小白求解答
...全文
110 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2017-12-05
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
  • 打赏
  • 举报
回复
两水先木示 2017-12-05
常量指针 指针地址可改变,但不能通过指针地址改变内容,即*p=5;(错) p=&c(√)
  • 打赏
  • 举报
回复
destory27 2017-12-04
int const *p; // *p的内容不能修改 p可以修改
  • 打赏
  • 举报
回复
棉猴 2017-12-04
《C++Primer第5版中文版》P57中提到 指针本身是个对象,它又可以指向另外一个对象。因此,指针本身是不是常量以及指针所指的是不是常量就是两个相互独立的问题。用名词顶层const表示指针本身是个常量,而用名词底层const来表示指针所指向的对象是一个常量。 在你的代码中,

int const* p = &a;
等价于

const int * p = &a;
即为底层const,p指向的内容是常量,而p本身是可以修改的。 如果要将p声明为顶层const,则代码为
int* const p = &a;
之后,如果为p赋新的值,则报错。 以下这篇文章中提到了上述内容。 《C++函数的返回值(下)》 http://blog.csdn.net/hou09tian/article/details/78586162 希望能够帮到你
  • 打赏
  • 举报
回复
srxumin 2017-12-03
int const *p表示不能通过*p改变其指向的内容,*p=50会报错p=&a不会报错 int *const p表示p本身不能更改,*p=50不会报错,p=&a会报错 int const *const p表示p本身和p指向的内容都不能更改,*p=50和p=&a都会报错
  • 打赏
  • 举报
回复
这个地方是指你不能用*p = 5;这样来修改指针指向的内容,而不是说指针不能改动
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.1w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
申请成为版主
帖子事件
创建了帖子
2017-12-03 10:25
社区公告
暂无公告