【C++】引用(上)

news/2025/1/22 11:56:47/

1、引用的基本使用

作用:给变量起别名

语法:数据类型(该数据类型要与原名的数据类型一致)     &别名=原名;

示例:

#include<iostream>
using namespace std;
int main()
{int a = 10;int& b = a;cout << "a=" << a << endl;cout << "b=" << b << endl;b = 100;cout << "a=" << a << endl;cout << "b=" << b << endl;system("pause");return 0;
}

运行结果:

2、引用注意事项

(1)引用必须初始化,否则代码会报错

(2)引用初始化后,不可以改变

示例:

代码:

#include<iostream>
using namespace std;
int main()
{int a = 10;//引用必须初始化int& b;system("pause");return 0;
}

结果:

代码:

#include<iostream>
using namespace std;
int main()
{int a = 10;int& b = a;int c = 20;b = c;//赋值操作,而不是更改引用cout << "a=" << a << endl;cout << "b=" << b << endl;cout << "c=" << c << endl;system("pause");return 0;
}

结果:

3、引用做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参

优点:可以简化指针修饰实参

以交换两个数为例:

代码:

#include<iostream>
using namespace std;
//值传递
void  swap1(int a, int b)
{int temp = a;a = b;b = temp;
}
//地址传递
void   swap2(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}
//引用传递
void swap3(int& a, int& b)
{int temp = a;a = b;b = temp;}
int main()
{int a = 50;int b = 100;swap1(a, b);cout << "值传递a= " << a << "  b= " << b << endl;swap2(&a, &b);cout << "地址传递a= " << a << "  b= " << b << endl;/*swap3(a, b);cout << "引用传递a= " << a << "  b= " << b << endl;*/system("pause");return 0;
}

执行结果:

代码:

#include<iostream>
using namespace std;
//值传递
void  swap1(int a, int b)
{int temp = a;a = b;b = temp;
}
//地址传递
void   swap2(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}
//引用传递
void swap3(int& a, int& b)
{int temp = a;a = b;b = temp;}
int main()
{int a = 50;int b = 100;swap1(a, b);cout << "值传递a= " << a << "  b= " << b << endl;/*swap2(&a, &b);*///cout << "地址传递a= " << a << "  b= " << b << endl;swap3(a, b);cout << "引用传递a= " << a << "  b= " << b << endl;system("pause");return 0;
}

结果:

从引用的代码结果可知,通过引用做函数参数同样可以实现:通过形参的改变从而改变实参。

总结:通过引用,参数产生的效果同地址传递是一样的,引用的语法更清楚简单。


http://www.ppmy.cn/news/1565211.html

相关文章

who w who

https://www.ityww.cn/733.html Linux查看用户登录信息命令-w & who & whoami Linux 基础 yvan 8年前 (2017-02-04) 3633次浏览 已收录 0个评论 显示当前已登录用户会话及动作命令-w 格式&#xff1a;w [options] [rootlocalhost ~]# w 23:46:39 up 8:29, 2 users, lo…

Linux:文件描述符fd、系统调用open

目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说&#xff0c;如果在电脑上新建了一个空白文档&#xff0…

场馆预定平台高并发时间段预定实现V2

&#x1f3af; 本文档介绍了场馆预订系统接口V2的设计与实现&#xff0c;旨在解决V1版本中库存数据不一致及性能瓶颈的问题。通过引入令牌机制确保缓存和数据库库存的最终一致性&#xff0c;避免因服务器故障导致的库存错误占用问题。同时&#xff0c;采用消息队列异步处理库存…

通过视觉语言模型蒸馏进行 3D 形状零件分割

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01;对应英文要求比较高&#xff0c;特此说明&#xff01; Abstract This paper proposes a cross-modal distillation framework, PartDistill, which transfers 2D knowledge from vision-language models …

一文玩转生成式AI新星DeepSeek-V3,带你5分钟配置自己的随身AI

前言 在人工智能领域&#xff0c;模型的性能与能力一直是衡量其价值的重要标准。近期&#xff0c;DeepSeek-V3 在多项评测中表现优异&#xff0c;超越了 Qwen2.5-72B 和 Llama-3.1-405B 等其他开源模型&#xff0c;并与世界顶尖的闭源模型 GPT-4o 以及 Claude-3.5-Sonnet 不相…

【优选算法】3----快乐数

这是第三篇算法题&#xff0c;也是十分的不好想&#xff0c;虽然定位在简单&#xff0c;但我感觉还是有些难度的~ -------------------------------------begin----------------------------------------- 题目解析&#xff1a; 同样的&#xff0c;这道算法题&#xff0c;看题…

智能系统的感知和决策

智能系统在感知和决策过程中具备的关键能力表现在智能感知/自主判定上&#xff0c;下面可以从感知的本质、自主判断的含义及其在智能系统中的作用进行深入分析。 1、智能感知&#xff1a;信息获取与理解 智能感知是指智能系统通过传感器或其他数据采集手段获取环境中的信息&…

Decode Global专注金融创新,构建便捷的交易平台

随着金融市场持续进阶&#xff0c;越来越多的年轻正在涌入金融交易的体系中&#xff0c;针对当下年轻人崇尚精简&#xff0c;优中取优的特点&#xff0c;Decode Global紧跟金融市场发展的步伐&#xff0c;不断创新体验&#xff0c;致力于打造一个精简快捷&#xff0c;安全便捷的…