引用本质

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
// swap1  等同于 swap2
int swap1(int &a, int &b){
	int t = a;
		a = b;
		b = t;
	return 0;
}

int swap2(int * const a, int * const b){
	int t = *a;
	   *a = *b;
	   *b = t;
	return 0;
}

int main(void){
	//引用的本质
	//int &b = a;
	//b是a的别名  请问 c++编译器后面做了什么?
	int a = 100;
	int &b = a;
	int &c = a;
	int &d = a;

	//请思考 几个问题
	//1.对一个内存空间是否可以起多个名称?
	printf("a =  %d   b = %d  c = %d  d = %d\n", a, b, c, d);
	//2.引用可以拥有多个名称
	printf("----------------------------------------------------\n");

	
	int p = 100;
	//int &y = p;
	int h = 101;
	int l = 102;

	//引用有没有自己的空间?
	printf(" p = %d   h = %d  l = %d\n", &p, &h, &l);
	//printf(" p = %d   y = %d  h = %d  l = %d\n", &p, &y, &h, &l);
	//引用有自己的空间

	printf("-------------------------------------------------\n");
	//结论:引用可以定义多个 引用有各自的空间  那么引用像什么
	int ai = 100;
	int bi = 1000;
	swap1(ai, bi);
	printf(" ai = %d  bi = %d\n", ai, bi);

	swap2(&ai, &bi);
	printf(" ai = %d  bi = %d\n", ai, bi);
	//综合几点引用别名很像  常指针
	// int &ai = a;    等同于  int * const ai = &a;
	// swap1(ai, bi);   换成    swap2(&ai, &bi);
	system("pause");
	return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值