#include < iostream, h >
void main() {
int x =5;
const int * const p = &x;
* p =88;
cout << * p << endl;
}

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


#include < iostream, h >
void main() {
int x =5;
const int * const p = &x;
* p =88;
cout << * p << endl;
}


【正确答案】:

*P=88;错误,因为指向常量的常量指针不能进行左值或赋值操作。


【题目解析】:

const修饰指针变量时,基本含义如下:
1)如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,不能进行*p左值操作。常数据成员只能通过初始化赋值。
2)如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。
3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量既不能让指针指向其他地址,也不能通过指针修改所指向的内容。


Top