const int *

Windows系统下载安装 Git 的详细教程 本文详细介绍了Windows系统下载安装Git的完整流程,包括从Git官方网站和阿里镜像下载安装包,逐步讲解安装向导中的各个设置选项,如安装路径、默认编辑器、行尾转换、终端模拟器等,并提供了每个步骤的截图和说明。安装完成后,博客还介绍了如何验证安装是否成功,以及如何配置Git的用户名和邮箱,确保可以正常使用Git进行版本控制。 阅读详情

一步步通俗拆解,从头讲明白

先把代码拆成3行,逐个讲类型,再讲为什么报错

int a=10;
int *p=&a;
const int * &q=p; // 报错行

1. 先搞懂每个变量是什么类型

  1. int a=10;
    普通整型变量,不用多说。

  2. int *p = &a;
    p 的完整类型:指向普通int的指针,简写 int*

  • p存a的地址,*p可以修改a的值
  1. const int * &q 拆开读,从右往左看(C++声明规则)
  • &q:q是一个引用(别名)
  • const int *:这个引用只能绑定「指向const int的指针」
    合起来:q是 const int* 类型指针的别名。

2. 核心矛盾:p 和 q 要求的类型不一样

  • 右边 p:int*(普通int指针)
  • 左边q要绑定的东西:const int*(只读int指针)

关键知识点1:int* 可以转成 const int*,但会产生临时值

C++允许把普通指针升级成只读指针,比如:

int* p = &a;
const int* temp = p; // 合法,temp是临时产生的指针

这个 temp 是临时对象,用完就销毁,属于「右值」。

关键知识点2:普通引用(不带const的&)不能绑临时右值

引用分两种:

  1. T& 普通左值引用:只能绑定实实在在存在、有名字的变量,不能绑临时对象
  2. const T& const引用:可以绑定临时对象

你的代码里 const int * &q 属于 T& 普通引用,不是const引用。
p 转成 const int* 时生成了临时对象,临时对象不能给普通引用当别名,编译器直接报错。


3. 生活化比喻

  • int* p = 一把能开锁的钥匙(能修改a的值)
  • const int* = 一把只能看、不能开锁的钥匙
    把能开锁的钥匙,转换成只读钥匙,会临时造一把新钥匙(临时对象)
  • const int * &q = 要求给「只读钥匙」起外号
  • 规则:外号不能临时造出来的东西,只能给手里长期持有的实物起外号

两种合法情况对应比喻

情况1:让引用变成const引用(允许绑临时)
const int * const &q = p;

相当于:允许你给临时造出来的只读钥匙起外号,合法。

情况2:p本身就是只读钥匙,不用临时造
const int *p = &a;
const int * &q = p;

p本身就是只读钥匙,是长期存在的实物,直接起外号,合法。


4. 最简对比代码,直观看出区别

错误版(你的代码)

int a=10;
int *p=&a;
const int * &q = p; // int*转const int*生成临时,普通引用不能绑临时 → 报错

正确1:引用加const

int a=10;
int *p=&a;
const int * const &q = p; // const引用可绑定临时 → 编译通过

正确2:p本身就是const int*,无临时

int a=10;
const int *p=&a;
const int * &q = p; // 同类型左值,无转换、无临时 → 编译通过

5. 补充一个小例子帮你理解「临时不能绑普通引用」

不光指针转换,普通数字也一样:

int &r = 10; // 报错!10是临时常量(右值),普通引用不能绑
const int &r = 10; // 合法,const引用可以绑临时

和你代码报错的底层逻辑完全一致:普通左值引用禁止绑定临时右值。

Python 神经计算实训 实训答案分享 【代码】Python 神经计算实训 实训答案分享。 阅读详情

相关推荐

浅谈声发射振动复合传感器

浅谈声发射振动复合传感器 随着全球经济和自动化工业的迅速发展,人们对设备故障特别是轴承类的故障诊断也日益重视起来了。 为满足客户对旋转仪器轴承异常的精准诊断,单一的依靠振动信号或声信号分析,是很难兼顾轴承的多种异常情况的。 为此,市面上开始着手研发出了可同时分析机械设备的振动信号和声信号的复合型传感器。 初期的复合型传感器主要有 2 种类型,下面以 A、B 来举例说明。 A 型是在被测物表面不同的 2 个位置分别放置声发射(AE)传感器和加速度(ACC)传感器,它虽能一定程度...

pxtech的博客 1153

const int *p与int *const p的区别

本文只是一篇学习笔记,是看了《彻底搞定C指针》中的相关篇幅后的一点总结,仅此而已! 一、先搞清const int *p与int const *p的区别 它们的区别就是:没有区别!! 无论谁在前面都没有影响!所以const int *p与int const *p用法一样! 二、const int *p的用法 #include #include #include int

潜龙勿用 2万+

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1084

const int *p 与 int *const p的区别 最方便理解的记忆方法

文章目录 const int *p int const *p int *const p const int * const p 总结 如果您对这几个有一定的了解,或者只是记忆模糊不清建议您直接看本文最后总结部分,相信对您有一个更好的理解记忆方式,如果您对此比较陌生,建议您从头观看,直观感受。 强调:总结是精华本分。 一、const int *p 直接上代码 这段代码会报错,那么为什么会报错,原因就是const封锁了*p *p是一个常量,所以他是不可以更改的。...

qq_45615577的博客 5669

KUKA机器人与S7-1200 PLC实现Profinet通讯配置步骤详解

在工业自动化产线中,PLC与工业机器人之间的高效数据交换是控制逻辑落地的关键。传统硬接线方案在信号点多时布线复杂、故障排查困难,而现场总线技术通过一根网线即可实现主从设备间的周期通讯。Profinet作为主流工业以太网协议,由S7-1200作为IO Controller主站,KUKA机器人作为IO Device从站,在WorkVisual与TIA Portal中完成设备组态、I/O映射及信号分配,即可替代成捆电缆,稳定传输启停、状态及报警信号。这一方案适用于汽车、3C、物流等行业的自动化产线,尤其适合需要扩

weixin_42519985的博客 251

Multisim实现555计时器模拟简易电子琴

一. 元器件介绍 这里用到的元器件有: DIgital power(VCC)数字电源 频率计数器(XFC) 示波器(XSC) ground 数字地 Capacitan 电容器 Resistor 电阻器 555_VIRTUAL 555计时器 触发按键(DIPSW)(DPST)(SPST)

是你呀星途的博客 2万+

const int* 和 const int * const 和 int const * 的区别

const int*和const int * const和 int const *的区别 原文地址 int const *是一个指向常量整数的指针 指向了一个不能被修改的值但是指针指向的地址可以改变 const在数据类型的一侧,所以可以放在int的前面const int *,(从c++ prime了解到) #include <stdio.h> int main() { ...

_llc的博客 1323

【绝对要收藏-优秀论文范文】高项-度量绩效域

摘要:本文基于某水库数字孪生平台建设项目(2022.9-2023.5,645.97万元)的管理实践,从信息系统度量绩效域角度展开论述。项目构建了包含防洪调度等6大子系统的数字平台,实现洪水"四预"功能。重点分析了度量绩效域的五大要点:制定有效指标(如成本±8%偏差阈值)、多维数据采集、预警临界值设定、基于趋势的主动干预和持续改进机制。特别阐述了绩效问题的诊断方法,包括设备采购全周期成本分析、阶段性成本报告制度等。项目状态展示采用三维可视化看板,集成进度、成本、质量等多维度实时数据,最终实

xylllamm的博客 348

详解const int *p,int*const p,int const *p

<br />详解const int *p,int*const p,int const *p<br />1 从const int n 说起 <br />    const int n=20,有了const修饰的n 我们不称它为变量,而称符号常量,代表着20这个数。这就是const 的作用。n是不能在它处重新赋新值了。 <br />     认识了const 作用之后,另外,我们还要知道格式的写法。有两种:const int n=20;与int const n=20;。它们是完全相同的。这一点我们是要清楚。总之

yjh0628的专栏 6696

Tmux学习总结

Tmux 重要概念 使用 Tmux 的时候千万不要去背指令,所有的指令都可以在 .tmux.conf 配置文件中绑定自己顺手的快捷键,也可以配置开启鼠标。 这个是我的配置文件:https://github.com/zuorn/tmux.conf 在Tmux逻辑中,需要分清楚Server > Session > Window > Pane这个大小和层级顺序是极其重要的,直接关系到工作效率: Server:是整个tmux的后台服务。有时候更改配置不生效,就要使用tmux kill-

满目星辰 579

【unity实战】随机地下城生成3——设置人物移动脚本、动画的切换和摄像机的跟随(含源码)

给房间添加触发器碰撞体,用来判断角色是否进入房间切割人物图片,注意人物每个图片高度可能不同,所有我们需要把轴心调整到人物的底部把人物跑步图片的高度,统一调成20,下面镂空,达到跳跃的效果快速创造人物动画,以人物idle为例,我们选中所有的idle人物图片,拖拽至窗口,unity就会自动生成,并提示保存动画位置别忘记设置人物排序图层,运行人物就动起来了新增run动画设置人物碰撞体设置刚体将重力设置为0,持续人物移动和动画切换的代码设置摄像机跟随单例代码在room中调用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1053

const int * 、int * const、int const* 等的区别和联系

前言:很多人都把const int * 、int * const、int const* 的区别和联系搞混,我自己在学习C++的过程中,也经常性          弄不 清楚,今天特意总结一下,作为学习笔记记录下来。 一,const修饰符用于指针         将const用于指针有些很微妙的地方,有两种不同的方式将const关键字用于指针。第一种方法是让指针指向一个常量对象,这样可以防止使用

阿黄啦啦 7614

第一章:Profibus DP通信简介

PROFIBUS (Process Fieldbus)的缩写,是一种国际化的、开放的、不依赖于设备生产商的现场总线标准。它广泛应用于制造业自动化、流程工业自动化和楼宇、交通、电力等其他工业自动化领域。串行现场总线主要用来连接数字现场设备或中、低功能的系统,如传感器、执行机构、变送器、可编程序控制器(PLC)、数控装置(NC)、编程设备、本地人机接口等。

qq_22560021的博客 4898

const int *p、int const *p、int * const p和const int * const p的学习

const int *p、int const *p、int * const p和const int * const p的学习1. const int *p、int const *p是一个东西代码运行如下:2.int * const p代码运行如下:3.const int * const p代码运行如下: 1. const int *p、int const *p是一个东西 此处修饰的对象是*p,可以...

qq_34477727的博客 1344

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

int *const 与const int *的区别

概述 一个指针是有两个属性的,一个是它指向的地方,一个是它指向地方上的内容。两者的差别也在此。const究竟修饰的是什么。 代码 #include <iostream> using namespace std; int main() { int p=1; int q=2; int k=3; const int *m=&p; int const *n=&q...

ruanyandong的博客 4809

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

int const*与int * const

1. int const* int const *p与const int *p意义一样。 从右往左看,进行解析,这个p是个指针,而且是个常量,类型是整型。可称为指针常量 特点:*p指向一个整型的常量,但是不能通过修改p所指向内存单元的值,只能修改所指向的对象,或者通过改该对象的值。 such as: int a = 10; int b = 20; int c = 55; int ...

冷崖的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

const int * p (或 int const* p) 和 int * const p以及const int * const p(或int const * const p)区别

const int p 与 int const p 和const int const *p区别 一、何为const const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。也就是说const常量,具有不可变性。 例如: const int Max=100; Max++会产生错误; 二、 指针常量与常量指针 1、指针常量 指针就是内存单元中的地址,所谓指针常量,也就是这个指针变...

qq_28816873的博客 4175

关于const int*, int const*以及int *const的区别

使用C++也有些年了,这个语言确实有诸多繁琐和变态的地方,比如这次要说明的const int*、int const*以及int *const的区别就是一例。相信不少同学都会对这其中的差异表示不解,我尝试着用一段代码来对他们进行区别。         先用上一篇文章中提到的助记方法(从变量名开始从右往左读)来理解一下这三者的字面意思:         const int* ip;    // i

skywalker_leo的专栏 2万+

const int * pi 、int const * pi与int * const pi及其操作

                      const int * pi 、int const * pi与int *  const  pi及其操作1 从const int i 说起    你知道我们申明一个变量时象这样int i ;这个i是可能在它处重新变赋值的。如下:int i=0;//…i=20;//这里重新赋值了    不过有一天我的程序可能需要这样一个变量(暂且称它变量),在申明时就赋一个

孙悟饭的专栏 1586

const使用(const int *p,int const  *p,和int * const p二)

const int *p,int const *p(指向常变量的指针变量,可以指向常变量,还可以指向未被声明为const的变量,但此时只能修改指向地址,不能修改值,可以修改指向的那个变量的值,不能用本身对指针变量地址修改的方式来修改值,如果一个变量已经被声明为常变量,不能用它进行初始化别的变量,而且只能用常变量的指针去指向它,而不能用一般的非const类型指针变量去指向它。) int * c...

cow_dake 7330

const int *,const int * const和int const *有什么区别?

我总是搞砸了如何正确使用const int* , const int * const和int const * 。 是否有一组规则定义您可以做什么和不能做什么? 我想知道在分配,传递给函数等

asdfgh0077的博客 1484

C++中const int * 和 int * const 及void *

#include<iostream> using namespace std; // 可传入任意类型的指针 void* test_void(void* v) { cout << v; //输出地址 cout << *(int *)v; //获取值 int i = 3; int* pi = &i; return pi; //可以返回任意类型指针...

weixin_43868436的博客 1347

浅谈const int *,int const *与int *const

最近恰好在学习浙江大学翁恺老师的《C语言程序设计》,老师对指针与const的见解颇深,感兴趣可在mooc搜索视频观看9.1-5节 先上总结: 在开始之前,先介绍一条const的规则:const默认与其左边结合,当左边没有任何东西则与右边结合。(来自知乎:C++里 const int* 与 int const* 有什么区别?) 那么首先先来谈谈const int *与int const *的区别与联系,由上面的规则其实很容易知道:const int *与int co...

YMGogre的博客 4244

const int、const int *、int *cosnt、const int * const、const int &的区别

转自:https://blog.youkuaiyun.com/itworld123/article/details/78967080 零、const的今世来生 关键字又叫做限定符,因为它限定了声明的含义 英文全称:constant,意义就是常数,故被const修饰的变量类型都是常类型,即不可改变。 C中的const,在C90(ANSI C 或者 C89)中加入的关键字(之前有个K&...

狂奔之林的博客 512

const int*、const int * const 和 int * const 之间的区别是什么?

是一个指向常量整数的可变指针。这允许你更改指向的内容,但不能更改指向的值。通常在 C 风格字符串中看到这种情况,其中有一个指向。你可以更改指向的字符串,但不能更改这些字符串的内容。当字符串本身位于程序的数据段中且不应被更改时,这一点很重要。是一个指向可以更改的值的常量或固定指针。这就像一个没有额外语法糖的引用。由于这一事实,通常你会使用引用而不是。这样的工具自动将声明转换为散文。如果你不确定,可以使用像。指针,除非你需要允许。

liluo0815481的博客 479

const int * a 与 int * const a 的定义与区别

一:const int a;   int const a ;这两个的作用是一样的,a都被定义成一个常整型数,一旦被定义后,就不能再其他地方重新赋值。二:const int * a;1:const修饰的是整型数 int,而不是指针,即a是一个指向常整型数的指针。近一步的理解为:整型数 *a是不可以被重新赋值的,而指针却是可以修改的,可以重新指向另外一个内存地址;2:eg:int a1=30; int...

leikun153的博客 1万+
上一篇: C++引用初始化和赋值
下一篇: 结构体对齐
越甲八千
博客等级 码龄11年 2959粉丝 553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值