学习目标
引用、引用作为函数参数、常量引用的学习
学习内容
一、引用: 已经定义的变量的别名
用途: 作为函数的参数,将引用变量作为参数,将直接使用其数据,而不是其副本(拷贝)
语法:typename &ref =valname;
例如:int num=10;
int& rnum=num;
注意事项:
1、引用必须引用合法的内存空间
2、引用必须初始化
3、引用一旦初始化,不能改变引用
引用的本质: 通过指针常量取实现
int a=10;
int &ref=a;//int *const ref =&a;
ref=20;
二、引用作为函数参数传递
三种函数参数传递方式
1、按值传递
2、按地址传递
3、按引用传递
三、常量引用
非常量引用的值必须为左值,
左值: 可以被引用的数据对象
右值: 非左值,字面常量,包含多项的表达式等
普通变量属于可修改的左值,const修饰的值属于不可修改的左值
利用常量引用的好处:
1、可以避免恶意修改数据
2、可以引用const和非const数据,否则只能引用非const数据
3、函数正确使用函数并生成临时变量
学习代码
引用和引用作为函数参数
#include<iostream>
using namespace std;
void exchange(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int num = 10;
int& a = num;//引用,使得a与num相等并且地址共用
cout << num << endl;;
cout << a << endl;
a = 100;
cout << num << endl;;
cout << a << endl;
//引用数组
int arr[3] = { 1,2,3 };
int(&arr1)[3] = arr;//引用数组方式
arr1[1] = 100;
cout << arr[1] << endl;
//引用传递地址案例,也可以采用指针方式,但是推荐采用引用传递地址方式,可以不用解引用
int m = 10;
int n = 20;
exchange(n, m);
cout << "m=" << m << endl;
cout << "n=" << n << endl;
return 0;
}
常量引用
#include<iostream>
using namespace std;
int cube(int x) {
return x * x * x;
}
int cube1(int& x) {
return x * x * x;
}
//常量引用
int cube2(const int& x) {
return x * x * x;
}
int main() {
int n = cube(3);
cout << n << endl;
const int& aa = 10;//常量引用
int num=3;
int n1 = cube1(num);
cout << n1 << endl;
const int num2 = 3;
int n2 = cube2(num2);//利用常量引用的好处:1、可以避免恶意修改数据 2、可以引用const和非const数据3、函数正确使用函数并生成临时变量
return 0;
}
代码实现
引用和引用作为函数参数
常量引用