常量指针,求说服……

xpingping 2012-09-17 02:54:56
常量指针:
指向常量的指针,指针所指向的内容不能改变,但是可以改变其所指向的地址。

int k=10;
const int *a=&k;
cout<<a<<endl;
cout<<*a<<endl;
k=11;
cout<<a<<endl;
cout<<*a<<endl;

不是改变了吗?
...全文
132 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2012-09-18
  • 打赏
  • 举报
回复
const 在 c 中只是 read only

指向常量的指针一般用在 函数的形参 上,告诉 compiler, 在函数中我不想更改指针指向内存中的数据
lj10193019 2012-09-17
  • 打赏
  • 举报
回复
int *a;
//不可用此指针改变其k的值,你可以直接给变量int k 直接赋值
叁叁玖玖 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

C/C++ code

int a = 12;
int const* p = &a;
//*p的类型是int const, 不可改变
*p = 12; //error
//但是 a的类型为int,可以改变
a = 12; //OK
[/Quote]
+1
mujiok2003 2012-09-17
  • 打赏
  • 举报
回复
表达式的cv(const and volatile)属性,从它的类型结合左右值可以看出来。


int& g(int a);
//表达式 g(12)的类型为int,但是是个左边值表达式
g(12) = 33; //OK
int f(int a);
//表达式 f(12)的类型为int,但是是个右值表达式
f(12) = 33; //error
xpingping 2012-09-17
  • 打赏
  • 举报
回复
明白了,谢谢大家……这算定义不够明确吧……
lxyppc 2012-09-17
  • 打赏
  • 举报
回复
常量指针可以理解为只读指针
你只能通过这个指针来读取内容,而不能通过这个指针来修改
mujiok2003 2012-09-17
  • 打赏
  • 举报
回复

int a = 12;
int const* p = &a;
//*p的类型是int const, 不可改变
*p = 12; //error
//但是 a的类型为int,可以改变
a = 12; //OK
wangweizhaoxin 2012-09-17
  • 打赏
  • 举报
回复
首先你要理解const int *a;究竟是什么不能改变?显然是该指针指向地址上面对应的值不能改变;
如果是int * const a;那就是指针这个地址不能改变;
那就很好理解了,你的例子只是改变了指针的地址,使它指向其他地址上面。
还有什么不明白的?
mujiok2003 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
不能通过那个指针改变
[/Quote]

正确, 常量指针不代表所指向的内容是不可改变的。

wayz11 2012-09-17
  • 打赏
  • 举报
回复
指向常量的指针,不能通过指向常量的指针修改指针所指向的内容,但是可以改变其所指向的地址。
www_adintr_com 2012-09-17
  • 打赏
  • 举报
回复
不能通过那个指针改变

64,654

社区成员

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

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