常量指针(pointer to constant)和指针常量(constant pointer)
一个指针可以操作两个实体,一个是指针值(即地址),一个是间访值(即指向的实体)。于是指针的常量性也分为两种:常量指针(pointer to constant)和指针常量(constant pointer)。
指针常量是相对于指针变量而言的,也就是指针值不能修改的指针。常量指针是指向常量的指针的简称。
定义指针常量还是常量指针就看const修饰,若const修饰指针本身,则为指针常量,若修饰指针类型(指向的实体的类型),则为常量指针。
常量指针:const int* ip=&a;
指针常量:int* const cp=&b; 或 int const* dp=&b;
常量指针常量:const int* const icp=&c;
常量指针不能通过该指针改变地址空间的值,但并没有限制地址空间的课改变性。因为一个地址空间可能不止一个指针指向它,所以可以通过其他指向它的指针改变它的值。
指针常量是相对于指针变量而言,就是这个指针成了常量,不能使这个指针指向其他地址空间,但可以通过该地址改变其地址空间内的值。这样说好像也不太明白,直接看例子:
using namespace std;
int a = 18;
int b = 28;
int c = 58;
//常量指针
const int* ap = &a;
//*ap = 12; //错误,因为ap是常量指针,不能通过这个指针改变其实体的值。
cout << *ap << endl;
a = 19; //正确,该实体依然可变。
cout << *ap << endl;
ap = &c; //正确,常量指针可以修改指针值。
cout << *ap << endl;
int* const bp = &b;
cout << *bp << endl;
*bp = 12; //正确,指针常量可以通过指针改变其实体的值。
cout << *bp << endl;
//bp = &a; //错误,指针常量不能改变指针值。
const int* const cp = &c;
//*cp = 33; //错误,常量指针常量不能通过该指针修改其实体的值。
//cp = &b; //错误,常量指针常量不能修改其指针值。
c = 57; //给实体的可变性没变。
cout << *cp << endl;
}

常量指针(pointer to constant)和指针常量(constant pointer)的更多相关文章
- 有关指针和C语言中的常量
常量类型(五种): 字面常量(2,3,6....) ; enum 定义的枚举常量; 字符常量('a','b'....) ; ...
- [LeetCode] Copy List with Random Pointer 拷贝带有随机指针的链表
A linked list is given such that each node contains an additional random pointer which could point t ...
- [LeetCode] 138. Copy List with Random Pointer 拷贝带有随机指针的链表
A linked list is given such that each node contains an additional random pointer which could point t ...
- 力扣——Copy List with Random Pointer(复制带随机指针的链表) python实现
题目描述: 中文: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深拷贝. 示例: 输入:{"$id":" ...
- 指针函数(Pointer Function)和函数指针(Pointer to Function或Function Pointer)
一.指针函数 1.解释:指针函数很好理解:简单来说,就是一个返回指针的函数,本质是一个函数.如: int fun(int x,int y); //这是一个普通函数的声明,返回值是一个int类型, ...
- const 指针与指向const的指针
最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~ const指针的定义: const指针是指针变量的值一经初始化,就不可以改变 ...
- c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针
1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...
- [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针
1.=================================================================== 1,数组是一块内存连续的数据.2,指针是一个指向内存空间的变 ...
- [C++]指针和指向数组的指针[一维数组与指针]
1.一维数组与指针 形如:int型 数组 a[10] 1)&a[0] 地址常量;地址类型:int *型 ; 存储数组a的首地址 ...
随机推荐
- STM32F4 DMA2D_R2M
图像处理的专门DMA 看一段示例代码 /** * @brief Displays a line. * @param Xpos: specifies the X position. * @param Y ...
- 【WIP】Ruby JSON
创建: 2018/03/22 以后有空补上 注: JSON.generate 参数只能是Obejct或者Array, 不可以是Hash https://docs.ruby-lang.org/ja/la ...
- HDU1253:胜利大逃亡
传送门 题意 逃离迷宫 分析 用优先队列和队列都可以,但是我vis数组写在取队列首节点就MLE了,放在放入节点的地方就ac了,看来是一种固定写法,在放入节点的地方判断,可以防止放入无效点到队列,防止队 ...
- bzoj 2792: [Poi2012]Well【二分+贪心】
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const ...
- Linux 入门学习教材
我大约从两年前开始接触Linux,在那之前工作中用的都是MCU,arm-cortex M系列的. 从单片机转向Linux学习,经历了很多的困难,刚开始都不知道怎么去编译, 网上也没有找到基础的教程,后 ...
- 采购发票检验MIRO差异科目设置
采购订单发票检验时,最终的金额可能跟采购订单的价格不一样,对于这部分差异,系统提供了后台配置科目的方式. 配置科目可通过OBYC,在BSX存货差异配置相关评估类型对应科目. 当库存商品少于采购订单数量 ...
- 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
不多说,直接上干货! Impala和Hive的关系(详解) 扩展博客 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 参考 horton ...
- MYSQL 配置远程连接
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话. GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY ...
- time模块,datetime模块
time模块 time模块是包含各方面对时间操作的函数. 尽管这些常常有效但不是所有方法在任意平台中有效. 时间相关的操作,时间有三种表示方式: 时间戳 1970年1月1日 ...
- yii2 设置多个入口文件
在web下希望加个core.php的后台入口,但因为权限问题,总是会跳转到index.php