1.引用
实际是一个变量的别名,类型 &来声明
与指针的不同:
1、并且不能为NULL,且一定要初始化,不能改变;指针可以为NULL,且可以指向不同的对象
2、不能有多级引用;指针可以有多级
3、++ 和 -- 操作,指针是对地址,引用是对引用的变量操作;引用访问时直接访问,而指针访问时间接访问
code:
#include<iostream>
using namespace std;
void swap1(int &a, int &b){
int t = a;
a = b;
b = t;
}
void swap2(int* a, int* b){
int temp = *a;
*a = *b;
*b = temp;
}
int main(){
int x=1, y=2;
int* p1=&x,* p2=&y;
cout<<x<<y<<endl;
swap1(x,y);
cout<<x<<y<<endl;
swap2(p1,p2);
cout<<x<<y<<endl;
return 0;
}
结果:12 21 12
可见都实现了交换
引用和指针的意义用一张自己做的图帮助理解,但是内存中显然不是这样的。
引用就像变量名一样绑在content后面,使得该引用不能再指向别的content,当然一个变量可以有很多个引用;指针则是另外的变量,存储了content所在的内存地址,
在swap函数中,指针是通过&地址的方式间接改变content的值;引用则是直接改变。