指针常量

指针常量是指指针是一个常量,它的语法格式是 const 在 * 右边

int *const ptr = &a;

它的含义是,不修改指针指向的地址,但可以修改该地址中的内容

下面我们举一个例子来进行具体的讲解

int a = 10;
int b = 20;
int *const ptr = &a; // ptr 是指针常量,指向 a

*ptr = 15; // 合法,改变 a 的值
ptr = &b; // 非法,不能改变 ptr 的指向

如下图,作为指针常量,ptr 永远指针指向红色的 0x0000,但里面的值 666 可以被重新赋值为其他的值
在这里插入图片描述

常量指针

常量指针寓意着指针所指的值为常量,不能通过指针来修改所指的值,但可以修改指针指向的地址

const int *ptr = &a;
int a = 10;
int b = 20;
const int *ptr = &a; // ptr是常量指针,指向a

*ptr = 15; // 非法,不能通过ptr修改a的值
ptr = &b; // 合法,可以改变ptr的指向

在这里插入图片描述

是指针常量也是常量指针

这种情况下,该指针指向的地址和值都不能改变

const int *const ptr = &a;
int a = 10;
int b = 20;
const int *const ptr = &a; // ptr既是指针常量也是常量指针

*ptr = 15; // 非法,不能通过ptr修改a的值
ptr = &b; // 非法,不能改变ptr的指向

在这里插入图片描述

参考

  1. 《Primer C++》
  2. 《C++ 面向对象高效编程》
  3. 简述指针常量与常量指针的区别
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐