const int * p,int const *p, int * const p, const int *const p 搞不清楚?

news2024/11/17 11:56:13

一、废话不多说,直接来结论

变量含义
const int *p    指针p可以修改,*p不可修改
int const *p   指针p可以修改,*p不可修改
int *const p指针p不可以修改,*p可以修改
const int * const p指针p不可以修改,*p不可以修改

显然:const int *p 与int const *p一个意思。

速记结论:忽略类型(int),*代表取内容(解引用),变量名代表指针(p),从const位置开始,然后从左往右看,const 与谁最近,谁就不可以修改。如:对于const int *p,从左往右看,const 与 * 最近,所以*p就不可以修改,而对于int *const p,由于*在const左边,所以*无效,从左往右看,const 与 p最近,所以p不可以修改。

二、案例

1、const int *p         指针p可以修改,*p不可修改

#include <iostream>

using namespace std;


int main()
{
    int a = 10;
    int b = 20;
    const int *p = &a;  // 指针p可以修改,*p不可以修改
    
    cout << "after const int *p = &a" << endl; 
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;
    
    // *p = 200;    // 错误,*p不可以修改
    // a = 200;
    
    p = &b;
    a = 200;    // 正确,*p不可以修改,但是a可以修改
    cout << "after p = &b, a = 200" << endl;
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;


    return 0;
}

2、int const *p         指针p可以修改,*p不可以修改

#include <iostream>

using namespace std;


int main()
{
    int a = 10;
    int b = 20;
    int const *p = &a;  // 指针p可以修改,*p不可以修改
    
    cout << "after const int *p = &a" << endl; 
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;
    
    // *p = 200;    // 错误,*p不可以修改
    // a = 200;
    
    p = &b;
    a = 200;    // 正确,*p不可以修改,但是a可以修改
    cout << "after p = &b, a = 200" << endl;
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;


    return 0;
}

3、int * const p         指针p不可以修改,*p可以修改

#include <iostream>

using namespace std;


int main()
{
    int a = 10;
    int b = 20;
    int *const p = &a;  // 指针p不可以修改,*p可以修改
    
    cout << "after const int *p = &a" << endl; 
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;
    
    *p = 100;   // 正确,*p可以修改
    // p = &b;  // 错误,指针p不可以修改
    cout << "after *p = 100" << endl;
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;

    a = 200;    // 正确,*p可以修改,但是a也可以修改
    cout << "after a = 200" << endl;
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;


    return 0;
}

4、 const int * const p 指针p不可以修改,*p不可以修改

#include <iostream>

using namespace std;


int main()
{
    int a = 10;
    int b = 20;
    const int *const p = &a;  // 指针p不可以修改,*p不可以修改
    
    cout << "after const int *p = &a" << endl; 
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;
    
    // *p = 100;   // 错误,*p不可以修改
    // p = &b;  // 错误,指针p不可以修改

    a = 200;    // 正确,*p不可以修改,但是a可以修改
    cout << "after a = 200" << endl;
    cout << "a = " << a << endl;
    cout << "*p = " << *p << endl;


    return 0;
}

三、总结

        速记结论:忽略类型(int),*代表取内容(解引用),变量名代表指针(p),从const位置开始,然后从左往右看,const 与谁最近,谁就不可以修改。如:对于const int *p,从左往右看,const 与 * 最近,所以*p就不可以修改,而对于int *const p,由于*在const左边,所以*无效,从左往右看,const 与 p最近,所以p不可以修改。

        记住这个结论以后,再也不怕const修饰的指针了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/797720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑客学习手册(自学网络安全)

一、首先&#xff0c;什么是黑客&#xff1f; 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手&#xff0c;现阶段黑客所需要掌握的远远不止这些。 二、为什么要学习黑客技术&#xff1f; 其实&#xff0c;网络信息空间安全已经成为海陆空之外的第四大战场&#xff0c;除了国…

MES中的EAP有什么作用?

在现代制造业中&#xff0c;MES&#xff08;Manufacturing Execution System&#xff09;是一个关键的生产管理系统&#xff0c;用于监控、控制和优化制造过程。而EAP&#xff08;Equipment Automation Program&#xff09;作为MES的重要组成部分之一&#xff0c;在生产线上发挥…

DL优化器精简总结 | SGD, Momentum, AdaGrad, Rmsprop, Adam, AdamW

&#x1f525; DL里的优化器相关考点&#xff0c;面试时面试官偶尔会问甚至变态点的会叫代码手撕&#xff0c;笔试选择题只要跟DL相关基本必考。废话不多说&#xff0c;直接上&#xff01; &#x1f604; 当然并不是纯为了面试&#xff0c;只不过说你如果是搞DL的连优化器都说…

性能测试QPS+TPS+事务基础知识分析

本篇文章是性能测试基础篇&#xff0c;主要介绍了性能测试中对QPSTPS事务的基础知识分析&#xff0c;有需要的朋友可以借鉴参考下&#xff0c;希望可以对广大读者有所帮助 事务 就是用户某一步或几步操作的集合。不过&#xff0c;我们要保证它有一个完整意义。比如用户对某一个…

#P1009. [NOIP2016提高组] 玩具小人

题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业。 有一天, 这些玩具小人把小南的眼镜藏了起来。 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图: 这时 singer 告诉小南一个谜題: “眼镜藏在我左数第 33 个玩具小人的右数第 11 个玩具小人的…

CMU 15-445 -- Database Recovery - 18

CMU 15-445 -- Database Recovery - 18 引言ARIESLog Sequence NumbersNormal ExecutionTransaction CommitTransaction AbortCompensation Log Records Non-fuzzy & fuzzy CheckpointsSlightly Better CheckpointsFuzzy Checkpoints ARIES - Recovery PhasesAnalysis Phas…

第四范式x百胜软件 以生成式AI改造零售软件

7月20日&#xff0c;在百胜软件联合探路者举办的行业数字化转型研学活动上&#xff0c;百胜软件联合第四范式宣布将以「式说」大模型为核心&#xff0c;在软件智能化升级、行业赋能等方面开展深入合作&#xff0c;共同推动大模型在零售行业的创新与应用。 活动上&#xff0c;双…

RK3588 使用OpenCL 遇到坑

资源1:本文章的源代码为:加速中... 资源2:RK3588 Android上应用使用OpenCL,所需的所有so 一:RK3588是否支持OpenCL 通过GPT一通搜索,说不支持。 感觉GPT东西不全可信啊!!! 导致自己一直怀疑RK3588不支持OpenCL使用,为什么呢? 1.通过adb shell 发现里面没有clinfo…

游戏图标有哪些素材模板推荐

游戏图标设计在游戏UI中占有非常重要的地位。例如&#xff0c;当我们看到一个游戏的启动图标时&#xff0c;很容易区分它是哪个游戏。设计游戏图标不仅是一个图形&#xff0c;也是一个标志。 本文将通过各种游戏图标设计素材分享游戏图标的类别和设计游戏图标的思考。 1. 游戏…

滴水逆向三期笔记与作业——02C语言——05 正向基础/05 循环语句

目录 一、缓冲区溢出的HelloWorld二、永不停止的HelloWorld三、基础知识3.1 变量的声明3.2 类型转换&#xff08;一般用于小转大&#xff09;3.3 表达式3.4 语句和程序块3.5 参数与返回值3.6 关系运算符3.7 逻辑运算符&#xff1a;&& || !3.8 单目运算符3.9 三目运算符…

人工智能TensorFlow MNIST手写数字识别——实战篇

上期文章TensorFlow手写数字-训练篇,我们训练了我们的神经网络,本期使用上次训练的模型,来识别手写数字(本期构建TensorFlow神经网络代码为上期文章分享代码) http://scs.ryerson.ca/~aharley/vis/conv/ 0、插入第三方库 from PIL import Image# 处理图片 import tensorf…

Python补充笔记5-模块化、文件

目录 一、模块 二、模块的导入 三、python中的包​编辑 四、常用的内容模块 五、第三方模块的安装与使用 六、编码格式的介绍 七、文件读写的原理 八、常用的文件打开模式 ​九、文件对象的常用方法 十、with语句​编辑 十一、os模块的常用函数 十二、os.path模块的常用方法​编…

防御第四次作业

一、结合以下问题对当天内容进行总结 1. 什么是IDS&#xff1f; IDS是&#xff1a;入侵检测系统&#xff08;intrusion detection system&#xff0c;简称“IDS”&#xff09;是一种对网络传输进行即时监视&#xff0c;在发现可疑传输时发出警报或者采取主动反应措施的网络安全…

跨平台力量:探索C++Qt框架的未来前景

卓越的跨平台支持&#xff1a;CQt可以在多个平台上运行&#xff0c;包括Windows、Mac、Linux、Android和iOS等。这使得开发者能够使用同一份代码构建跨平台的应用程序&#xff0c;从而显著降低了开发成本和时间投入。 丰富的类库和工具&#xff1a;CQt提供了广泛的类库和工具&…

上位机编程 VS 嵌入式编程:哪个更有前途?揭秘行业发展秘密

上位机和嵌入式是计算机的两个具体应用领域&#xff0c;它们在语言、工具和应用方面存在一定的差异。上位机更加注重高层逻辑和抽象&#xff0c;提供了多种语言和工具供开发者选择。而嵌入式开发通常局限于使用C语言&#xff0c;并且在过去甚至需要使用汇编语言&#xff0c;开发…

QT Http协议

文章目录 前言一、HTTP概述二、HTTP的两种模型1.B/S模型2.C/S模型 三、请求报文和响应报文三、调试软件Postman四、QT中的HTTP类总结 前言 本篇文章来给大家讲解QT中的Http协议&#xff0c;Http协议主要用于网络中数据的请求和响应&#xff0c;那么这篇文章将给大家讲解一下这…

设计灵感充电!挂在悬崖边的建筑效果图,你会怎么设计?

我相信大部分人都看到过类似下面这张的民宿图片&#xff1a; 挂在悬崖边&#xff0c;四四方方的“盒子”&#xff0c;没有任何实用性和审美性可言。很多网友戏称&#xff1a;“这不是《消失的她》空中版吗&#xff1f;”那如果让你设计一个悬崖边的建筑&#xff0c;你会从何入手…

Python编程——while循环语句讲解

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 目录 一、怎么理解循环&#xff1f; 二、while语句基础格式…

跨境电商多语言带直播功能功能列表

一、直播导购 1.直播入驻管理&#xff1a;直播入驻实际上就是商家入驻&#xff0c;开通商家后会获得直播权限 2.直播观看/拉流页面(分三屏&#xff0c;可以左右滑动&#xff09;&#xff1a; 左屏&#xff1a; 直播间信息&#xff1a;直播间名称、直播封面、房间号、在线人数、…

Android性能优化 — ANR问题定位分析

ANR&#xff08;Application Not Response&#xff09;应用程序未响应&#xff0c;当主线程被阻塞时&#xff0c;就会弹出如下弹窗 一、traces.txt文件 Android的traces.txt文件记录了进程的堆栈情况&#xff0c;对于分析应用响应慢&#xff0c;以及ANR的原因很有帮助。trac…