关于const修饰的具体对象,倒是很好记忆:
QQ图片20170522114139.png (91.13 KB, 下载次数: 0)
下载附件
2017-5-22 11:42 上传
只是我不理解“指针指向的对象不可变”,如下代码:
-
- int a=2;
- const int *b=&a;//b 类型为 const int *,表示不能改变 *b 的值
- //(*b)++; 编译报错
- b++;//可以改变b的值,指向一个未定义的内存单元
- a++;//a 类型 为 int,可以改变a的值
复制代码
a++和(*b)++不都是改变a的值吗?为何a++就可以,而(*b)++就不可以呢?
望编程老手解答一下。
a不是const类型,当然可以改变
然而常量指针绝对不能修改指针指向的常量内容*b
一般用作函数形参,
main()
{
int a =0;
fun(&a);
}
fun(const int* p){
限制这里,不能修改主函数中a的值。
}
一周热门 更多>