当前位置: 首页 > news >正文

C++学习笔记之引用(基础)

C++学习笔记之引用

https://www.runoob.com/cplusplus/cpp-references.html

引用变量是一个别名,它是已存在变量的另一个名字
一旦把引用初始化为某个变量,可以使用该引用名称或变量名称来指向变量

1、引用vs指针

引用和指针之间有一些相似,也有一定不同:
①不存在空引用,引用必须连接到一块合法的内存
②一旦引用被初始化为一个对象,就能不能被指向另一个对象,而指针可以在任何时候指向另一对象
③引用必须在创建时初始化,指针可以在任何时间初始化

还是回到引用最初的特征——“别名”,如果需要给一个人起个绰号,那么这个人首先要存在,那么引用自然不会有引用,而且别名和对象自身指向的其实是同一个东西,就比如“香帅”和楚留香其实是同一个人,这样理解是否更加形象一些呢?

而指针则是更加灵活,不像引用与变量深度绑定,更偏向于工具,是内存操作的媒介

2、创建引用

引用是变量在内存中的第二标签,也可以理解为先前所说的变量的“绰号”
因此,在引用关联到变量上之后,通过原始的变量名或者是引用二者都可以访问该变量的内容,指向的是同一块内存

int value = 18;
int &r = value;
cout << &value << endl;
cout << &r << endl;

在这里插入图片描述
在声明完引用后,引用就可以和原始变量一样使用,使用&可以将变量作为引用绑定到右值上

3、把引用作为参数

引用也可以作为函数的参数使用

void swap(int& x, int& y) {
  int temp;
  temp = x; 
  x = y;    
  y = temp;
}
int x = 10;
int y = 20;
swap(x, y);   // 内存地址的交换
cout << x << endl;
cout << y << endl;

引用的实质是内存地址,尤其是对于一些内容进行修改时
经常会涉及值传递引用传递的区别,值传递在函数结束后,并没有改变原来的值,因为参数只是被复制到函数中,操作的并不是原始的变量,因而调用结束后,没有修改传入的值;而引用则是修改的地址,因此最终改变的是地址,那么是确实修改了对应变量的内容

4、把引用作为返回值

通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护
通过函数返回引用的方式与返回指针的方式非常类似
在这里插入图片描述
但是,有一点需要注意,这里和返回指针类似,局部变量需要考虑生命周期,因此不能返回局部变量引用,因为函数调用结束会面临销毁,指向它的引用就会异常,上面框出的代码是有问题的

这里同样使用static进行处理

int& updateValue(int value)
{
	static int p = 10;  // 此时是全局作用域
	int& ref = p;
	return ref;
}

相关文章:

  • ardunio超声波测距实验
  • Docker和anaconda的区别?
  • 单向循环链表
  • Spring Cloud集成Gateaway
  • Linux:git
  • Linux——进程状态
  • 基于SpringBoot的扶贫助农管理系统
  • 滑动窗口算法—字符串的排列
  • 路线查询|基于springboot的公交线路查询系统设计与实现(附项目源码+论文+数据库)
  • MATLAB求解微分方程和微分方程组的详细分析
  • 品胜电子携手成都蓉城,共谋“商业+体育”合作新篇章
  • 【python - 函数】
  • 76-mysql的聚集索引和非聚集索引区别
  • 类的初始化列表
  • 如何通俗易懂的解释TON的智能合约
  • 什么是APT攻击,有哪些防御策略
  • Android Framework(五)WMS-窗口显示流程——窗口布局与绘制显示
  • 数据流通有风险,跨域管控来护航
  • Python 数学建模——Fitter 拟合数据样本的分布
  • tensor连接和拆分
  • 古巴外长谴责美国再次将古列为“反恐行动不合作国家”
  • 中哥两国元首共同见证签署《中华人民共和国政府与哥伦比亚共和国政府关于共同推进丝绸之路经济带和21世纪海上丝绸之路建设的合作规划》
  • 国台办:实现祖国完全统一是大势所趋、大义所在、民心所向
  • 《蛮好的人生》:为啥人人都爱这个不完美的“大女主”
  • 李强会见巴西总统卢拉
  • AI观察|从万元到百万元,DeepSeek一体机江湖混战