引用&
引用本质在C++内部实现是一个指针常量,在初始化以后无能再修改
和对指针时初始化时获取变量地址不同,这里&用于在声明时,表明声明的参数的引用。
#include <iostream>using namespace std;int main(){int num1 = 10;int &num2 = num1;//num2是num1的引用,和num1一样指向同一块内存地址num2 = 20;//修改num2的值以后,num1的值也会被改变,因为两者的内存地址是一样的cout << num1 << endl;return 0;}
20
注:从上例可以看到,这种场景中,引用就是脱裤子放屁,真正的应用场景是作为函数实参。
引用作为函数实参
可以做到和指针的地址传递效果一样,可以在函数中对实参直接修改。
C++推荐采用引用的技术,因为语法简单(调用时和值传递一样),但其本质确实指针操作,故而和指针传递一样高效。
#include <iostream>using namespace std;void swap(int& num1,int& num2){int temp = num1;num1 = num2;num2 = temp;}int main(){int num1 = 10;int num2 = 20;swap(num1, num2);//这里表面上是值传递,其实函数声明的是引用传递cout << num1 << endl;cout << num2 << endl;return 0;}
20 10
如果不想实参被影响,又不想进行值传递(拷贝造成资源浪费),那么也可以对引用进行const修饰:
#include <iostream>using namespace std;void print(const int& num1){//引用加上了const,就不能进行赋值操作了,只能读,实现值传递的效果且兼具地址传递的高效cout << num1 << endl;}int main(){int num1 = 10;print(num1);return 0;}
