const指针这个问题,复习了好多次,每次看书的时候明白,但是过了一段时间之后没用,总会再次被搞糊涂。
那么今天就把这个问题先用代码实现,把自己理解的写下来。代码在下面:
int i = ;
int j = ;
const int* pi = &i;
int* const pj = &i;
const int* const pp= &i;
printf("pi:%d\tpj:%d\tpp:%d \n",*pi,*pj,*pp);
pi = &j;
*pj = ;
printf("pi:%d\tpj:%d\n",*pi,*pj);
先讲第一个:
const int* pi = &i;
当const在变量之前,指针pi指向的对象是可变的,但是指针(*pi)的值是不可变的。
int* const pj = &i;
当const在变量之后,指针pi指向的对象是不可变的,但是指针(*pi)的值是可变的。
const int* const pp= &i;
这个指针指向的对象和值都不能改变。
其实const指针很简单,但是往往被面试官问的稀里糊涂的,一时混沌了,最好的理解方式就是动手写一个测试代码。