关于指针const
情况一:
int i = 10;
const int* p = &i;
*p = 10 ;
//error C3892: “p”: 不能给常量赋值
情况二:
int i = 10;
int* const p = &i;
p++;
//error C3892: “p”: 不能给常量赋值
总结:编译器会提示报错。原因是 const int* 定义指针所指向的内容是常量, int* const 是定义指针为常量。
技巧:const在*的左边是修饰内容,const在*的右边是修饰指针。
思考:情况1定义了内容为常量,能否通过修改i改变i的值,也就是问用const int* 定义了p,对i是否有影响。
int i = 10;
const int* p = &i;
i = 11;
//编译通过
结论:const int* 定义了p,指向i,对i没任何影响。