关于指针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没任何影响。