引用:就是给一个数据起个别名,别名和原名指的是同一个数据
基本语法:数据类型 &别名 = 原名
示例:
#include#include using namespace std; int main() { //引用的基本语法 数据类型 &别名=原名 int a = 10; int& b = a; cout << "a = " << a << endl; cout << "b = " << b << endl; b = 20; cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause"); return 0; }
运行效果:
注意事项:
1.引用的时候必须初始化,不可以说先定义一个别名没有具体的指向原名是不可以的;
2.引用一旦初始化后就不允许修改了,不能说b刚开始是a的别名,后面想让b不做a的别名了去做c的别名这样是不可以的。
引用的作用.
我们在创建三个函数用来做数值交换,swap---交换
- 值传递
- 地址传递
- 引用传递
值传递swap1
#include#include using namespace std; //数值交换 void swap1(int a, int b) { int temp = a; a = b; b = temp; } int main() { int a = 10; int b = 20; swap1(a, b); cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause");//按任意键继续 return 0; }
a和b的值并没有被形参修饰到
地址传递swap2
#include#include using namespace std; //数值交换 void swap1(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a = 10; int b = 20; swap1(&a, &b); cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause");//按任意键继续 return 0; }
a和b的值被互换了,其实换的是a和b原来的地址,在地址传递中形参可以修饰到实参
引用传递swap3
#include#include using namespace std; //数值交换 void swap1(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int a = 10; int b = 20; swap1(a, b); cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause");//按任意键继续 return 0; }
在引用传递中,因为形参是数据的一个别名,对形参操作也是对实参的操作,所以引用传递中形参可以修饰到实参。
引用的本质就是一个指针常量 当系统看到int &a=b的时候会自动转化为 int * const a = &b;这也是为什么引用的反向不可以改变但可以通过别名来修改原名的值。跟常量指针的规范是一样的。



