const限定符修饰变量时,到底怎么区分啊,求助!

2019-12-27 19:02发布

关于const修饰的具体对象,倒是很好记忆:
QQ图片20170522114139.png (91.13 KB, 下载次数: 0) 下载附件 2017-5-22 11:42 上传
只是我不理解“指针指向的对象不可变”,如下代码:
  1.       
  2.          int a=2;
  3.         const int *b=&a;//b 类型为 const int *,表示不能改变 *b 的值
  4.         //(*b)++;   编译报错
  5.         b++;//可以改变b的值,指向一个未定义的内存单元
  6.         a++;//a 类型 为 int,可以改变a的值
复制代码

a++和(*b)++不都是改变a的值吗?为何a++就可以,而(*b)++就不可以呢?
望编程老手解答一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
eagle_avr
1楼-- · 2019-12-28 15:33
 精彩回答 2  元偷偷看……
eagle_avr
2楼-- · 2019-12-28 18:05
貌似楼上两位的解释都是以函数参数为例子的。为何?
myxiaonia
3楼-- · 2019-12-28 20:24
eagle_avr 发表于 2017-5-22 16:11
貌似楼上两位的解释都是以函数参数为例子的。为何?

说明了一种典型用法,c标准库就是这样的
eagle_avr
4楼-- · 2019-12-29 01:07
好吧。多谢各位的回复,那我就理解到这里。回头再去看看英文的资料,有可能是翻译的时候的文字差异。

一周热门 更多>