【C++学习笔记】引用传递

本文档介绍了C++中的引用概念,作为变量的别名,引用必须在声明时初始化且不能改变其指向。文中通过示例展示了引用在函数参数传递中的应用,特别是引用传递如何实现变量的直接修改。同时,对比了值传递与引用传递的区别,强调了引用传递在交换变量值时的优势。
摘要由CSDN通过智能技术生成

0x00 前言

文章中的文字可能存在语法错误以及标点错误,请谅解;

如果在文章中发现代码错误或其它问题请告知,感谢!

本文档为个人边学习边记录的C++笔记,非教程,笔记中会存在引用他人文章内容的部分,被引用的原文不会被特殊标记出来,但会在参考文档中给出原文链接。

0x01 引用传递

引用是一种特殊类型的变量,可以被认为是另一个变量的别名。

int i, j;
int &ri = i; //建立一个int型的引用ri,并将其初始化为变量i的一个别名
j = 10;
ri = j;		//相当于i = j

使用引用时需要注意:

·声明一个引用时,必须同时对它进行初始化后,使它指向一个已存在的对象。

·一旦一个引用被初始化后,就不能改为指向其他对象。

也就是说,一个引用一旦被初始化后就不能另作他用,必须确定是哪个变量的别名,只能始终作为一个变量的别名。

引用也可以作为形参,形参的初始化不在类型说明时进行,而是在执行主调函数中的调用表达式时,才为形参分配内存空间,同时用实参来初始化形参。这样引用类型的形参就通过形实结合,成为了实参一个别名,对形参的任何操作也就会直接作用于实参。

用引用作为形参,在函数调用时发生的参数传递,称为引用传递

例1:使两个整数进行交换,用引用作为形参

#include <iostream>
using namespace std;

void swap(int &a, int &b){
	int t = a;
	a = b;
	b = t;
}
int main() {
	int x = 5,y = 10;
	cout << "x =" << x << " y =" << y << endl;
	swap(x, y);
	cout << "x =" << x << " y =" << y << endl;
	return 0;
}

运行结果:
在这里插入图片描述
例1程序执行时变量情况:

在这里插入图片描述

图1:例1程序执行时变量情况

例2:值传递与引用传递比较

#include<iostream>
#include<iomanip>
using namespace std;

void fiddle(int in1, int &in2){
	in1 = in1 + 100;
	in2 = in2 +100;
	cout << "The values are:";
	cout << setw(5) << in1;
	cout << setw(5) << in2 << endl;
}

int main(){
	int v1 =7, v2 =12;
	cout << "The values are";
	cout << setw(5) << v1;
	cout << setw(5) << v2 << endl;
	fiddle(v1, v2);
	cout << "The values are";
	cout << setw(5) << v1;
	cout << setw(5) << v2 << endl;
	return 0;
}

运行结果:
在这里插入图片描述
《C++语言程序设计(第4版)》书上所有章节出现的示例源代码随着学习的深入会陆续上传至github,代码为个人手动输入并通过编译,有的示例代码可能没有注释:https://github.com/fyw4/C-plus-plus-learning-example

以上。

参考文档:
郑莉 董渊 何江舟.《C++语言程序设计(第4版)》[M].北京:清华大学出版社。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值