1.C++相较于 C 语言的增强
1.1引用 Reference
1.1.1 引用基础案例
&
定义了一个 int 类型的引用,引用名称为 ret ,使用 num 赋值当前引用,可以认为
1.ret 是一个引用
2.ret 是 num 变量的别名
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int num = 10;
/*
C++ 特定的数据形式【引用】需要使用的【标记】标点符号
&
定义了一个 int 类型的引用,引用名称为 ret ,使用 num 赋值当前引用
可以认为
1.ret 是一个引用
2.ret 是 num 变量的别名
*/
int &ret = num;
cout << "num = " << num << endl;
cout << "ret = " << ret << endl;
cout << "-----------------------" << endl;
num = 20;
cout << "num = " << num << endl;
cout << "ret = " << ret << endl;
cout << "-----------------------" << endl;
ret = 1000;
cout << "num = " << num << endl;
cout << "ret = " << ret << endl;
return 0;
}
1.1.2一个变量可以有多个引用
一个变量可以同时有多个引用,就例如一个人可以有多个外号
定义了一个 int 类型的引用,引用名称为 ret ,使用 num 赋值当前引用。
ret1 ret2 ret3 都是 num 的引用。
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
int num = 200;
int & ref1 = num;
int & ref2 = num;
int & ref3 = num;
cout << "num : " << num << endl;
cout << "ref1 : " << ref1 << endl;
cout << "ref2 : " << ref2 << endl;
cout << "ref3 : " << ref3 << endl;
cout << "-------------" << endl;
ref3 = 1000;
cout << "num : " << num << endl;
cout << "ref1 : " << ref1 << endl;
cout << "ref2 : " << ref2 << endl;
cout << "ref3 : " << ref3 << endl;
return 0;
}
1.1.3引用在函数参数中的使用
引用在函数参数中使用,相当于地址传递
优势
1.相较于指针方式节省空间,引用不占用额外的内存空间,指针变量占内存的 8 个字节(64位操作系统)
2.引用不会有额外的运算符使用,操作简单,使用方便
3.引用效率高于指针。
#include <iostream>
using namespace std;
// 值传递
void swap1(int n1, int n2);
// 地址传递
void swap2(int *p1, int *p2);
/*
引用传递
当前函数所需的参数类型是引用类型
@param r1 int 类型引用
@param r2 int 类型引用
*/
void swap3(int &r1, int &r2);
int main(int argc, char const *argv[])
{
int num1 = 200;
int num2 = 1000;
swap1(num1, num2);
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
cout << "------------------" << endl;
swap2(&num1, &num2);
cout << "num1 =