c++函数引用参数可能创建临时变量

C++函数参数的引用方式 总结来说,值传递将实参的值复制给函数的形参,对形参的修改不会影响实参本身;引用传递将实参的引用传递给函数的形参,对形参的修改会同时修改实参。非常量引用参数允许修改传递给函数的实参,而常量引用参数只能读取实参的值,不能进行修改。引用传递是指将实参的引用传递给形参,在函数中对形参的修改会同时修改实参。值传递是指将实参的值复制给形参,在函数中对形参的修改不会影响实参本身。符号定义的,它允许函数修改传递给它的实参,并且对应的实参也会被修改。符号定义的,它确保函数无法修改传递给它的实参,只能读取。 阅读详情

引用会创建临时变量

c++引用参数也可能创建临时变量,这种情况发生在,实参类型与形参类型不同,但实参可以转化为形参类型,且形参类型是const的情况。
另外,如果形参类型不是const,而实参类型与形参不匹配,那么编译是通不过的。

代码

#include<iostream>
using namespace std;
void func(int &a)
{
    cout<<&a<<endl;
}
void func2(const int &a)
{
    cout<<&a<<endl;
}
int main()
{
    long long int a=10;
    cout<<&a<<endl;
    //func(a);  //编译不通过
    func2(a);
}

输出结果

0x61fe10
0x61fe1c
CloudCompare&PCL 体元累加法(树冠体积计算) 文章目录 阅读详情

相关推荐

SAP-PM设备模块-PM主数据之维护策略

预防性维护的一种计划方式,需要先建立维护策略什么情况下需要创建维护策略?

TRUIXIANG的博客 2569

【C++】什么情况下会产生临时变量

临时变量是只在调用期间有效,具有常性的一种变量。 一、值传递 在返回值以值传递(传值和传指针)的形式返回时,会生成临时变量。 int sum(int a,int b) { return a + b; } 编译器会将结果a+b的值拷贝给临时变量,最终返回的是临时变量; 二、具有引用类型 在函数调用中,如果形参是引用的类型的情况下:当实参和形参的类型不匹配会产生临时变量; ...

QX_a11的博客 2401

糖果【贪心】

【问题描述】 有N(1≤N <100,000)N(1≤N~<100,000)N(1≤N <100,000)种不同类型的糖果,每种糖果数量无限多。第i种糖果每颗的价格是Pi(1≤Pi≤1018),有Ci(1≤Ci≤1018)P_i(1≤P_i≤10^{18}),有C_i (1≤C_i≤10^{18)}Pi​(1≤Pi​≤1018),有Ci​(1≤Ci​≤1018)头牛想吃这种糖果。 FarmerJohnFarmer JohnFarmerJohn拥有金钱BBB元(1≤B≤1

算法小猪的博客 794

const 与函数引用

1.     引用主要作为函数形参,这是处置除指针之外,另外一种直接利用原始数据的做法临时变量:引用和参数:如果实参和引用参数不匹配,c++将生成临时变量。现在,仅当形参为const引用时,才允许这样做!   创建临时变量的时机:1) 实参类型正确,但不是左值! 2)  类型不正确,但可以转化为正确的类型!如果采用引用的意图是修改作为参数的变量,那么创建临时变量将组织这

xxphddz的专栏 455

视觉惯性SLAM系列——ORB-SLAM3的整体介绍及各个线程的功能(五)

跟踪线程(Tracking Thread)作用:负责处理每一帧图像,进行相机位姿的估计和定位。它首先执行与前一帧图像的特征匹配,然后通过仅运动(motion-only)BA(Bundle Adjustment)优化位姿。如果跟踪失败,它会尝试在所有地图中进行重定位。此外,跟踪线程还负责决定何时插入新的关键帧,以及何时将关键帧从局部地图中移除。详细介绍见局部建图线程(Local Mapping Thread)作用:管理局部地图,向活跃地图添加关键帧和点,移除多余的关键帧和点。

曾经也曾立志 1004

深入解析docx4j:从Word到PDF的高保真转换实战

本文深入解析了如何使用纯Java开源库docx4j实现Word到PDF的高保真转换。针对中文环境,重点讲解了字体映射原理、Linux服务器字体部署方案,并提供了完整的代码示例和配置方法。同时,文章涵盖了表格、图片处理、性能优化及生产环境部署指南,帮助Java开发者构建稳定、可控的文档转换服务。

weixin_29237635的博客 672

产生临时变量的一些场景

例如,将 char* 类型的字符串字面量传递给需要 const std::string& 参数的函数时,编译器会创建一个 std::string 类型的临时变量来存储这个字符串。例如,将 double 类型的变量转换为 int 类型时,会创建一个 int 类型的临时变量来存储转换后的值。当将右值(没有内存空间,无法直接访问的数据对象)赋值给const引用时,编译器会创建一个临时变量来存储这个右值,并让const引用指向这个临时变量。在某些情况下,编译器可能会出于优化和性能考虑而创建临时变量。

m0_71808911的博客 492

华为海思2026届数字IC秋招笔试高频考点解析与实战技巧(2025最新版)

本文深入解析华为海思2026届数字IC秋招笔试的高频考点与实战技巧,涵盖时序优化、低功耗设计、DFT规则等核心模块。针对2025年最新真题,提供详细的解题思路和工程经验,帮助考生高效备考。特别关注SystemVerilog约束随机测试等新增考点,助力考生在秋招笔试中脱颖而出。

m2n3o4p5的博客 414

C/C++ 引用用作函数参数,属性,临时变量,引用参数和const

按值传递导致被调用函数使用调用程序的值的拷贝。但是在swapv()中,变量a和b是复制了wallet1和wallet2的值的新变量,因此交换了a和b的值并不会影响wallet1和wallet2的值。如果将上面类似的参数传递给接受引用参数的函数,将会发现,传递引用的限制更严格,毕竟,如果ra是一个变量的别名,则实参应该是该变量。Tips:如果函数调用的参数不是左值或与相应的const引用参数的类型不匹配,则C++将创建类型正确的匿名变量,将函数调用的参数的值传递给该匿名变量,并让参数来引用该变量。

WWester的博客 564

嵌入式开发必备:aarch64-linux-gnu-gcc交叉编译工具链保姆级安装指南(含常见错误解决)

本文详细介绍了aarch64-linux-gnu-gcc交叉编译工具链的安装与配置方法,涵盖从系统软件源安装到Linaro二进制包部署的全流程。针对嵌入式开发中常见的依赖错误、版本冲突等问题提供实用解决方案,并分享性能优化技巧与项目集成经验,帮助开发者高效完成ARM64设备的跨平台开发。

yoga7的博客 1029

两张 300I Duo 部署 Qwen3.5‑32B

开发者成功使用两张华为300IDuo(共4颗Ascend310P3芯片)部署Qwen3/Qwen3.5的30B/32B模型,并公开详细步骤。关键点包括:硬件需两张300IDuo(每芯片44GB显存),软件需CANN≥24.1和MindIE2.3.0专用镜像。部署流程涵盖驱动安装、模型下载(需修改为FP16格式)、容器启动、张量并行配置(TP=4)等环节。实测显示每芯片显存占用20-35GB,系统稳定运行。该方案已在知乎等平台验证可行,适用于Qwen3.5-32B等同类模型。

evering的博客 2251

C语言指针变量作为函数参数

在C语言中,函数的参数不仅可以是整数、小数、字符等具体的数据,还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁。 像数组、字符串、动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合。 有的时候,对于

aeoluspu的专栏 1252

SAP ABAP CO核心扩展-ZCKMLQS 多物料工厂的评估数量结构报表(CKMLQS)

CKMLQS 只能查看单一物料工厂的评估数量结构,SAP 没有提供多物料工厂的评估数量结构报表。这篇文章将实现 CO核心扩展-ZCKMLQS 多物料工厂的评估数量结构报表。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 1089

C++引用

引用函数函数模板引用函数模板函数模板具体化 引用 1.c和c++使用&符合来表示指示变量的地址,c++给&符合赋予了另一个含义,将其用来声明引用。例如:将rodents作为rats变量的别名: int rats; int & rodents = rats; 其中,&不是地址运算符,而是类型标识的一部分。就像声明中的char*指的是指向char的指针一样,int&指的是指向int的引用。例: #include <iostream> using namesp

weixin_50866517的博客 762

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++引用详解

引用 参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。 对于基本类型的数据,它们占用的内存往往只有几个字节,对它们进行内存拷贝非常快速。而数组、结构体、对象是一系列数据的集合,数据的数量没有限制,可能很少,也可能非常多,对它们进行频繁的内存拷贝可能会消耗很多时间,拖慢程序的执行效率。 C/C++ 中禁止在函数调用时直接传递数组的内容,而是强制传递数组指针;而对于结构体和对象没有这种限制,调用函数时既可以传递指针,也可以直接传递内容;为了提高效

weixin_54285142的博客 925

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

07-C++基础语法(常引用const)

可以接受const和非const实参(非const引用,只能接受非const实参)当常引用指向了不同类型的数据时,会产生临时变量,即引用指向的并不是初始化时的那个变量。引用可以被const修饰,这样就无法通过引用修改数据了,可以称为常引用。可以指向临时数据(常量、表达式、函数返回值等)const必须写在&符号的左边,才能算是常引用。可以跟非const引用构成重载。可以指向不同类型的数据。

qq_56728342的博客 147

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++ const引用、临时变量 引用参数

C++引用—临时变量、引用参数和const引用 如果实参与引用参数不匹配,C++将生成临时变量。如果引用参数是const,则编译器在下面两种情况下生成临时变量:          实参类型是正确的,但不是左值          实参类型不正确,但可以转换为正确的类型 左值参数是可被引用的数据对象,例如,变量、数组元素、结构成员、引用和被解除引用的指针都是左值,非左值包括字面常量和包含多项式

鱼思故渊的专栏 6265

c++中临时变量不能作为非const的引用参数

引自:http://blog.baisi.net/?116670/viewspace-4407 试看下面的代码: #include using namespace std; void f(int &a)  {  cout } void g(const int &a) {  cout }  int main()  {  int a = 3, b = 4;

一碗米线 1万+

C++——引用变量

C++引用一些常识

在夜里行走的博客 6207

C++基础--引用做函数参数

引用,简单粗暴的解释叫做别名,简单粗暴的例子就是,我是熊叫大雄,但是很多时候别人不叫我熊叫大雄,会叫我大雄,粤语地区朋友爱叫我阿雄,有人叫我雄,所以,熊叫大雄这个变量的值是我,雄、大雄、阿雄是熊叫大雄的别名,通过别名叫到的值还是我,晕了没? 这一篇主要讲引用做函数参数,引用还有其它内容,不过我觉得做函数参数比较常用且好理解一点, 1、创建引用 引用的创建形式有点类似指针,但是又有不同,一般这...

上善若水,为而不争 6541

C++ 引用与引用作为函数的参数

对一个数据建立一个“引用”,他的作用是为一个变量起一个别名。这是C++对C语言的一个重要补充。 如何建立一个引用 int a = 5; int &b = a; cout<<a<<endl; cout<<b<<endl; cout<<&a<<endl; cou...

朋朋の优快云博客 6009

【C++入门】缺省参数、函数重载与引用

缺省参数函数重载以及引用的出现是为了补充C语言语法的不足以及对C语言设计不合理的地方进行优化,引用的出现大大降低了我们学习C语言时相对于指针的难度,也便于我们更好的理解和使用

Renswc的博客 2947

C++:缺省参数、函数重载、引用

引用不是新定义⼀个变量,而是给已存在变量取了⼀个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同⼀块内存空间。比如:水浒传中李逵,江湖上人称"黑旋风"。类型&引用别名=引用对象C++中为了避免引入太多的运算符,会复用C语⾔的⼀些符号,比如前面的>>,这里引用也和取 地址使用了同⼀个符号&,注意使用方法角度区分就可以。// 引⽤:b和c是a的别名int& b = a;int& c = a;// 也可以给别名b取别名,d相当于还是a的别名。

2401_86551514的博客 1839

【C++】引用作为函数参数

C++中,引用作为函数参数 引用作为函数参数 C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能。 ———————————————————— c++,函数传参: (1)将变量名作为实参和形参。这时传给形参的是变量的值,传递是单向的。如果在执行函数期间形参的值发生变化,并不传回给实参。因为在调用函数时,形参和实参不是同一个存储单元。//同c (2) 传递变量的指...

胡图图 1万+

【C++】C++ 引用详解 ① ( 变量的本质 - 引入 “ 引用 “ 概念 | 引用语法简介 | 引用做函数参数 | 复杂类型引用做函数参数 )

一、变量的本质 - 引入 " 引用 " 概念 1、变量的本质 - 内存别名 2、引入 " 引用 " 概念 - 已定义变量的内存别名 3、" 引用 " 的优点 二、引用语法简介 1、语法说明 2、代码示例 - 引用的定义和使用 三、引用做函数参数 1、普通引用必须初始化 - 函数参数除外 四、复杂类型引用做函数参数 1、复杂类型参数的三种传递方式 I 、传递结构体对象本身 II 、传递结构体指针 III 、传递结构体引用 2、代码示例 - 使用三种传递方式传递参数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 5728

c语言 临时变量 const,C++ const引用、临时变量 引用参数详解

C++引用—临时变量、引用参数和const引用如果实参与引用参数不匹配,C++将生成临时变量。如果引用参数是const,则编译器在下面两种情况下生成临时变量:实参类型是正确的,但不是左值实参类型不正确,但可以转换为正确的类型左值参数是可被引用的数据对象,例如,变量、数组元素、结构成员、引用和被解除引用的指针都是左值,非左值包括字面常量和包含多项式的表达式。定义一个函数Double refcube(...

weixin_34649372的博客 732
上一篇: fatal error: GL/gl.h: No such file or directory
下一篇: c++函数重载二义性
?-ldl
博客等级 码龄7年 712粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值