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程序执行时变量情况:
例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].北京:清华大学出版社。