引用(&引用名)

引用是什么

引用是某一个变量的别名,起到了一个标识作用,声明引用时必须对其初始化。

Type &别名 = 目标变量名

int a = 10;
int &b = a;//必须初始化

b = 200;//相当于把a的值修改成了200
printf("&d,%d\n",a,b);//200,200

a = 300;
printf("%d,%d\n",a,b);//300,300

int array[3]={1,2,3};
int (&ary)[3]=array;//对数组的引用 
printf("%d,%d\n",&array[0],&ary[0]);//1,1

引用作为函数的参数

此时函数中对形参的各种操作实际上是对实参本身进行操作,而非简单的将实参变量或对象的值拷贝给形参。

//引用作为函数的参数时不用初始化
void Swap(int &a,int &b)//除了使用指针还可以使用引用
{
    int temp = a;
    a = b;
    b = temp;
}

//main
int x = 10;
int y = 20;
Swap(x,y);
printf("%d,%d\n",x,y);// 20,10

 

struct Teacher
{
    char name[10];
    int age;
}

void Printf1(int *t1)
{
    printf("%d\n",t->age);
}

void Printf2(int &t2)
{
    printf("%d\n",t.age);
    t.age = 30;
}

void Printf3(int t3)
{
    printf("%d\n",t.age);
    t.age = 28;
}
/main
Teacher t;
t.age = 25;
Printf1(&t);
Printf2(t);//引用
printf("%d\n",t.age);
Printf3(t);//t在这作为相残从在相当于 t = t;
printf("%d\n",t.age);
///
25
25
30
30
30

引用的本质

引用在C++中的内部实现是一个常量指针

Type& name  <=>  Type *const name

void Fun(int &a)
{
    a = 100;
}

void Fun(int *const a)
{
    *a = 100;
}

int main()
{
    int x  = 10;
	func(x);
}

请仔细对比间接赋值成立的三个条件

1、定义两个变量 (一个实参一个形参)

2、建立关联 实参取地址传给形参

3、*p形参去间接的修改实参的值

结论

引用在实现上,只不过是把:间接赋值成立的三个条件的后两步和二为一

当实参传给形参引用的时候,只不过是c++编译器帮我们程序员手工取了一个实参地址,传给了形参引用(常量指针)

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值