指针和const

2020-04-02  本文已影响0人  cancer文

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的值

上一篇下一篇

猜你喜欢

热点阅读