C语言中const与指针的相爱相杀
程序员文章站
2022-07-14 16:49:52
...
const修饰指针——常量指针
const int *p = &a;
此时经过const修饰之后,指针就如束缚了手,不能改变它所指向地址的数据了,但是它还是有脚的,还是可以跑得,所以此时指针可以指向其他地址。
//*p = 10; //这个不行
p = &b; //这个可以有
const修饰常量——指针常量
int* const p = &a;
此时经过const修饰之后,指针就如束缚了脚,不能指向其他地址,但是它还是有手的,可以改变它所指向地址的数据。
*p = 10; //这个可以有
//p = &b; //这个不行
const又修饰指针又修饰常量
const int * const p = &a;
此时经过const修饰,指针手脚都被束缚,既不能改变指向,又不能修改所指向地址的数据。
//*p = 10;//这个不行
//p = &b; //这个也不行
如果上面的方法不能记住,那么我们在换一个方法
看见这个
const int *p = &a
你就死记硬背,看见 *p , *p 是干什么的,一般是 *p = 10,那么加了const,就不能这样做了,所以你看见 const int *p = &a,就知道不能改值,只能改指向。就反着记。
相反的
int *const p = &a;
一般 p = &b ,那么加了const,就不能这样做了。也是反着记。
总结
const后面接p,就不能p = &a;const后面接 *p,就不能 *p = 10;
上一篇: Java面试基础题1