#include < iostream. h >
main( ) {
int x =7;
const int *p = &x;
*p =99;
cout << *p << endl;
}

改错题:以下程序中有一处错误,请抄写有错误的语句并给出错误原因。


#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时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。


Top