改错题:以下程序中有一处错误,请抄写有错误的语句并给出错误原因。
#include < iostream. h >
main( ) {
int x =7;
const int *p = &x;
*p =99;
cout << *p << endl;
}
【正确答案】:
*P=99;错误。因为指向常量的指针P不能进行*P左值操作
【题目解析】:
const修饰指针变量时,基本含义如下:
1)如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,不能进行*p左值操作。常数据成员只能通过初始化赋值。
2)如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。
3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。