const在*后面
int i = 1;
int *const p = &i;
*p = 26; //ok
p++; //error
int j = 100;
p = &j; //error
int *const p是把指针p变成不可修改 例如
int *const p = &i; // 假设p 地址为0x7fffe136a798
假设p 地址为0x7fffe136a798,这个值0x7fffe136a798就不能修改,也就是他就指向i是不能变的,i的任何操作都没问题,*p只是取i而已或者赋值i,i的地址没变。
int * const p 是锁住了p这个变量,也就是p的地址不能变
const 在*前面
int i = 1;
const int *p = &i;
*p = 26; //error
p++; //ok
int j = 100;
p = &j; //ok
除了不能通过*p来修改值以外,其他都没问题
const int p 是锁住了p 让其不能通过 * 来解析获取到p的地址内容
两个const
int i = 1;
const int * const p = &i;
*p = 26; //error
p++; //error
int j = 100;
p = &j; //error
这个是否既不能修改p也不能修改指向p的值
网友评论