注册 登录
编程论坛 C++教室

[求助] const 常量指针问题!(已经加上注释分析,大家看下对吗)

terryf50 发布于 2008-12-09 12:50, 1236 次点击
有两个函数不会怎么修改,尝试了还是出错。请大家指教下。
一:
void main()
{
int x=58;
int y=98;
const int *p=&x;
y=*p;
*p=65;     //因为 const int * p 是指向常量的指针限定了*p的操作,但是可以用p=&y,改变*p 的指针指向,也可以用x=,改变x的值。
p=&y;
}
二:
void main()
{
int x=58;
int y=98;
z=55;
int * const p=&x;
*p=65;      
p=&y;       //因为int * const p 是常量指针,指针本身是常量,所以p= 操作不成立,但是*p=65就可以改变x的值。编译器把p看做是常量地址。
z=*p;
}

[[it] 本帖最后由 terryf50 于 2008-12-9 21:24 编辑 [/it]]
4 回复
#2
newyj2008-12-09 13:23
lz 要清楚
const int* ptr; 是 指向 常量的指针 不能 这样 *p=65;赋值的
int* const ptr 是常指针 不能 这样 p=&y; 赋值的
#3
h130773959592008-12-09 16:57
Agree with Floor 2!
#4
PcrazyC2008-12-09 19:34
const int* ptr;//const修饰int,int为指针指向的类型,故指向的数据不能改变
int* const ptr //const修饰指针ptr,故指针不能改变指向.
#5
zzt_4282008-12-10 19:47
楼上说的很对,很简练!
1