C++——引用

1.定义及表示
引用是已定义变量的别名,用&声明引用。
int price = 1;
int & prices = price;

prices是指向int变量的引用,price与其引用变量prices的值和地址都相同。

#include<iostream>
using namespace std;
int main()
{
	int x_ming = 50;
	int & l_ming = x_ming;
	cout << "x_ming: " << x_ming << "   l_ming: " << l_ming << endl;
	cout << "x_ming adress: " << &x_ming << "   l_ming adress: " << &l_ming << endl;
	int z_sang = 100;
	l_ming = z_sang;
	cout << "z_sang: " << z_sang << "   x_ming: " << x_ming << "   l_ming: " << l_ming << endl;
	cout << "z_sang adress: "<< &z_sang << "   x_ming adress: " << &x_ming << "   l_ming adress: " << &l_ming << endl;
	system("pause");
	return 0;
}

x_ming: 50   l_ming: 50
x_ming adress: 0017FBB0   l_ming adress: 0017FBB0
z_sang: 100   x_ming: 100   l_ming: 100
z_sang adress: 0017FB98   x_ming adress: 0017FBB0   l_ming adress: 0017FBB0

请按任意键继续. . .

(编故事)有一个人小名叫小明(x_ming)大名叫李明(l_ming),考试考了50分,嫉妒张三(z_sang)考试考了100分,于是,他把成绩单上的50分改成和张三一样的100分,拿回家给家长看,家长惊讶,遂call老师,查到教务处系统是50分,遂被教训。

int x_ming;
int & l_ming;
l_ming = x_ming;
//error:声明引用变量时初始化

引用更接近const指针,一旦和某个变量关联起来,必是生死相随

int & l_ming = x_ming;
int * const p = &x_ming;
2.引用用作函数参数

按引用传递,按值传递,按指针传递。

#include<iostream>
using namespace std;
void swap_by_value(int a, int b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}
void swap_by_point(int * a, int * b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}
void swap_by_reference(int & a, int & b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}
int main()
{
	int x_ming = 50;
	int z_sang = 100;
	cout << "x_ming: " << x_ming << "   z_sang:" << z_sang << endl;
	swap_by_value(x_ming, z_sang);
	cout << "swap_by_value result:\n" << "x_ming: " << x_ming << "   z_sang: " << z_sang << endl;
	swap_by_point(&x_ming, &z_sang);
	cout << "swap_by_point result:\n" << "x_ming: " << x_ming << "   z_sang: " << z_sang << endl;
	swap_by_reference(x_ming, z_sang);
	cout << "swap_by_reference result:\n" << "x_ming: " << x_ming << "   z_sang: " << z_sang << endl;
	system("pause");
	return 0;	
}

x_ming: 50   z_sang:100
swap_by_value result:
x_ming: 50   z_sang: 100
swap_by_point result:
x_ming: 100   z_sang: 50
swap_by_reference result:
x_ming: 50   z_sang: 100

请按任意键继续. . .

按引用传递和按指针传递都成功的实现了交换功能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值