cpp
#include <iostream>
#include <cstring>
int main() {
const int x = 1;
int b = 10;
int c = 20;
const int* a1 = &b;
int* const a2 = &b;
const int* const a3 = &b;
x = 2;
a1 = &c;
*a1 = 1;
a2 = &c;
*a2 = 1;
a3 = &c;
*a3 = 1;
return 0;
}
错误1:
x=2,由于变量x为整型常量,因此不能改变x的值。
错误2:
a1定义为const int* 类型,这里的const在int*的左侧,它是用来修饰指针所指向的变量,即指针指向为常量。所以 a1=&c,这个操作是可以的,但是*a1=1,改变了指向的内容是不允许的。
错误3:
a2定于为int* const类型,注意这里的const在int*的右侧,它是用来修饰指针本身的,即指针本身为常量。所以a2=&c,这个操作是不可以的,但是*a2=1,修改了指向的内容是可以的。
错误4:
a3定义为const int* const 类型,这里的两个const分别出现在int*的左侧和右侧,因此它表示不仅指针本身不能修改,并且其指向的内容也不能修改。所以关于a3的几个操作都是错误的。