C++指出哪句错了,改正并说明原因

来源:百度知道 编辑:UC知道 时间:2024/06/07 16:56:57
#include<iostream.h> main () { int x=5, y=6; const int*p= &x; *p=y; cout<<*p<<endl; } 自学c++请高手指点

const int*p= &x这句,你已经限制了指针p所指的内容为const,即不能改变,
所以在下一句:*p=y ,中你要更改指针P所指的内容,编译器当然会报错,如想改正有三种方法:
1.去掉const int*p= &x中的const,即int*p= &x;
2.将y的地址赋给P而不是y的值,即 p = &y;
3.移动const,即 int *const p= &x;,这样你指定了指针p的地址为const,赋给p一个地址初值,这样在整个程序中p所指的地址是不可改变的,但它所指的内容可以更改

p是一个const指针,表示不能修改它所指向的值,而*p=y就是在修改p所指向的值,所以这句编译不通过

楼上正解!

前置const后定义的变量(p)
在后面使用的话不能修改变量(p)的值