C++ 指针常量和常量指针的区别

指针常量

指针常量:顾名思义它就是一个常量,但是是指针修饰的。

格式为:

cpp 复制代码
int * const p //指针常量

在这个例子下定义以下代码:

cpp 复制代码
int a,b;
int * const p=&a //指针常量
//那么分为一下两种操作
*p=9;//操作成功
p=&b;//操作错误

因为声明了指针常量,说明指针变量不允许修改。如同次指针指向一个地址该地址不能被修改,但是该地址里的内容可以被修改。

常量指针

常量指针:如果在定义指针变量的时候,数据类型前用const修饰,被定义的指针变量就是指向常量的指针变量,指向常量的指针变量称为常量指针,格式如下:

cpp 复制代码
const int *p = &a; //常量指针
或 int const* p = &a;

在这个例子下定义以下代码:

cpp 复制代码
int a,b;
 const int *p=&a //常量指针
//那么分为一下两种操作
*p=9;//操作错误
p=&b;//操作成功

因为常量指针本质是指针,并且这个指针是一个指向常量的指针,指针指向的变量的值不可通过该指针修改,但是指针指向的值可以改变。

判断限制域的时候,const总是修饰其左侧标识符,如果const位于最左侧则修饰其右侧标识符

指向常量的指针常量该怎么写?

cpp 复制代码
const int * const b = &a;//指向常量的指针常量

参考:

1\] \[2\]

相关推荐
光头闪亮亮11 分钟前
C++凡人修仙法典 - 宗门版-上
c++
光头闪亮亮15 分钟前
C++凡人修仙法典 - 宗门版-下
c++
John_ToDebug1 小时前
Chromium base 库中的 Observer 模式实现:ObserverList 与 ObserverListThreadSafe 深度解析
c++·chrome·性能优化
科大饭桶1 小时前
C++入门自学Day11-- String, Vector, List 复习
c语言·开发语言·数据结构·c++·容器
点云SLAM1 小时前
C++中内存池(Memory Pool)详解和完整示例
开发语言·c++·内存管理·内存池·new/delete·malloc/free
wow_DG2 小时前
【C++✨】多种 C++ 解法固定宽度右对齐输出(每个数占 8 列)
开发语言·c++·算法
Epiphany.5562 小时前
c++最长上升子序列长度
c++·算法·图论
颖川守一3 小时前
C++c6-类和对象-封装-设计案例2-点和圆的关系
开发语言·c++
charlee444 小时前
将std容器的正向迭代器转换成反向迭代器
c++
arbboter4 小时前
【C++20】新特性探秘:提升现代C++开发效率的利器
c++·c++20·新特性·span·结构化绑定·初始化变量·模板参数推导