欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;

相关标签: 指针 c语言