const关键字和指针

const指针

const关键字

image-20240412161048111

1.const int p

const int p 与 int const p 是等价的。

const修饰变量 p 时,则 p 成为只读变量,必须在定义的同时初始化,不能在其他地方被重新赋值
即这个变量就只能作为右值(赋值给别人),不能成为左值(接收别人的赋值)。

img

2.const int *p

当把 const 放最前面的时候,它修饰的就是 p,p 表示的是指针变量 p 所指向的内存单元里面的内容,即这个内容不可变。

img

const 可以禁止指针变量 p 修改变量 x 中的值,但变量 x 自己也可以修改自己的值。如下图所示,p指向的地址没有变,但变量 x的值可以变。

img

另外,p 中存放的是指向的内存单元的地址,这个地址是可变的。如下图所示,p 开始指向 x ,后面修改为指向 y。

img

const int *p 与 int const *p 是等价的。

3.int * const p

这里 const 修饰的是 p,所以 p 中存放的内存单元的地址不可变,但内存单元中的内容是可变的。即 p 的指向不可变,p 所指向的内存单元的内容可变。
此时,p 中存放的内存单元的地址,必须在定义的同时初始化,如下图所示。

img

而 p 所指向的内存单元的内容可变,如下图所示。

img

4.const int * const p

此时 *p 和 p 都被修饰了,那么 p 中存放的内存单元的地址和内存单元中的内容都不可变。

总结

  • const int *p:p可变,p指向的内容不可变
  • int * const p:p不可变,p指向的内容可变
  • const int * const p:p和p指向的内容都不可变
posted @ 2024-04-12 16:25  ihuahua1415  阅读(40)  评论(0)    收藏  举报
*/