关于常量指针的问题

zqt2121 2017-12-03 10:25:32
我这样写为什么没报错呢,,而且运行后p的值也改了。。。,小白求解答
...全文
138 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵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;这样来修改指针指向的内容,而不是说指针不能改动

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧