整数类型引用
int a=3;
int &b=a;//引用必须初始化
指针类型引用
int a=10;
int *p=&a;
int *&q=p;
首先了解什么是引用,什么是指针
引用是为了避免用指针,并且需要传地址,而不是传值。
&符号就是取地址符号, 含义只这么一个; *符号就是创建一个指针, 或者做一次地址跳转;
int a = 10; // 给a分配一个内存逻辑地址0x100001, 这个地址存放了值10;
int *p = &a; //创建变量p, 给p分配地址0x100002, 这个地址存放的值是"0x100001"(a的逻辑地址值);
int *&q = p; //创建变量q, 给q分配地址也是0x100002, 因此这个地址存放的值还是a的逻辑地址值;
*q = 20; //访问存放在q变量地址下的值, 获得了a的地址值, 再访问一下a的地址值, 修改上面的内容为20;
//函数调用时候,给形参开辟内存空间,将实参值传递给形参,函数调用结束,销毁内存
例:
void fun(int *a,int *b)
{
int c=0;
c=*a;
*a=*b;
*b=c;
}
int main()
{
int x=1,y=2;
fun(&x,&y);
}
/* 这是一个典型的交换数值
a,b的地址的值互换
*/
//当使用引用,操作简单化
void fun(int &a,int &b)
{
int c=0;
c=a;
a=b;
b=c;
}
int main()
{
int x=1,y=2;
fun(x,y);
}
//实现原理:引用是地址传值,即a,b的地址值互换