const指针与指向const的指针
const指针与指向const的指针
const指针
- 如下代码:
int main() {int num = 42;int* const p = # // p是常量指针,指向一个整型数cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;num = 76; // 修改p所指向的内存的值cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;return 0;
}
运行结果:
可以看出,num被成功修改,*p发生了改变,即p指向的那段内存空间的值可以改变,const在这里修饰指针p。
- 如下代码:
int main() {int num = 42;int* const p = # // p是常量指针,指向一个整型数cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;int num2 = 76;p = &num2; // 此处编译时报错,试图修改p的指向cout << "num = " << num << endl;cout << "num2 = " << num2 << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;return 0;
}
编译报错:
报错指出,p的指向无法修改,因为const在这里修饰的是指针本身p。
指向const的指针
- 如下代码:
int main() {const int num = 10086;const int* p = # // p是指向常量的指针cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;*p = 10088; // 编译报错,试图修改*pcout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;return 0;
}
编译报错:
num声明为const,显然不能直接修改,当通过使用指向num的指针p来修改时,也行不通。
- 如下代码:
int main() {const int num = 10086;const int* p = # // p是指向常量的指针cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;const int num2 = 10010;p = &num2; // 修改p的指向cout << "num = " << num << endl;cout << "num2 = " << num2 << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;return 0;
}
运行结果:
可以看出,p的指向发生了改变,显然这里的const修饰的是p所指向的内容。
- 注意如下代码:
int main() {const int num = 10086;int* p = # // 编译报错cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;return 0;
}
编译报错:
const内容无法赋值给普通的指针,只能赋给用const修饰类型的指针。
指向const的const指针
- 如下代码:
int main() {const int num = 100;const int* const p = #cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;*p = 99; // 编译报错,试图修改*p的值cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;return 0;
}
编译报错:
- 如下代码:
int main() {const int num = 100;const int* const p = #cout << "num = " << num << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;const int num2 = 99;p = &num2; // 编译报错,试图修改p的指向cout << "num = " << num << endl;cout << "num2 = " << num2 << endl;cout << "p = " << p << endl;cout << "*p = " << *p << endl << endl;return 0;
}
编译报错:
- 总结:
const
在*
之后时修饰的是指针本身,表示指针指向不可变;
const
在*
之前时修饰的是指针所指向的内容,表示这部分值不可变;
const指针与指向const的指针相关推荐
- 辨析 const指针 和 指向常量的指针
辨析以下几种指针p的定义. int tmp = 5;int *p = &tmp; const int *p = &tmp; int const* p = &tmp; int * ...
- const指针和指向常量的指针
先看下面六种写法: 1. const int p;2. const int *p;3. int const* p;4. int * const p;5. const int * const p;6. ...
- char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p
char * const p; //常量指针,p的值不可以修改 char const * p://指向常量的指针,指向的常量值不可以改 const char *p: //和char const *p
- 函数指针、函数返回指针、const指针、指向const指针,指向const的const指针。
①函数指针 函数指针是指向函数的指针变量. 因而"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所 ...
- 超详细的const 指针与指向const的指针
最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~ const指针的定义: const指针是指针变量的值一经初始化,就不可以改变 ...
- const指针和指向const的指针
今天在看项目代码时,发现竟然可以给有const修饰的指针赋值,按道理的话,const修饰的不是常量吗?常量应该是初始化之后就不能再修改才对.对于这个问题,我大致的研究了一下. 参考const 指针与指 ...
- const指针与指向const对象的指针
一. 指向const对象的指针: 定义形式:const double *cptr; const限定了指针指向的对象类型,指针本身不是const类型 特征: 1.不能通过指针改变const对象的值,但是 ...
- const指针 与指向const的指针的区别
const 指针与指向const的指针 当使用带有const的指针时其实有两种意思.一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容.听起来有点混淆一会放个例子上来就明白了. ...
- [C++基础]018_常量指针和指向常量的指针
先来看一下什么是常量指针,什么是指向常量的指针吧! 1. 常量指针定义 1 int * const ptr = new int(); 2. 指向常量的指针 1 const int* ptr; 上面已经 ...
最新文章
- 4名矿工控制50%算力 去中心化是不是谎言?
- exception in initAndListen: 12596 old lock file, terminating
- 解决PLSQL 查询后显示中文为问号(???)问题
- RSA的密钥把JAVA格式转换成C#的格式
- 【MATLAB教程案例2】GPS信号捕获算法的案例分析
- UI组件之TextView及其子类
- java框内的值怎么同步_java并发编程使用锁进行数据同步操作一
- 字符串中最后一个单词长度
- Error Handling in ASP.NET Core
- ROS学习笔记5(理解ROS节点)
- 设计模式学习笔记——外观模式
- Python3,2行代码,多种方法,直接把网页内容转换成PDF文档和图片。
- python 实现一个属于自己的语音播报器
- win7网上邻居_CentOS7 Linux访问Win7的共享文件夹
- 用人话说说文明和文化
- 上海图书馆及分馆特色
- discuzdiy图片模块_Discuz各类幻灯片的制作方法 - 完全支持DIY
- 使用python的turtle库画表情包
- 2019牛客国庆集训派对day2 K 2018
- 黑苹果引导工具 Clover 配置详解
热门文章
- python浅学(1)大体介绍
- 1843:【06NOIP提高组】能量项链
- 高考加油的c语言程序,高考高三加油口号_高三加油打气的口号大全
- jenkins持续集成介绍及安装部署
- python获取文本框内容_jquery获取文本框的内容
- 计算机网络传输分层模型
- C语言:向一个有序数组中插入一个数据,并保持数组的有序性。
- 好员工去哪儿了:高端IT白领荒胜过春节保姆荒
- 【FPGA——基础篇】同步FIFO与异步FIFO——Verilog实现
- 开启xmp1还是2_王者荣耀神秘商店暑假什么时候开启?神秘商店2020年暑假开启时间...