C++之引用

在C语言中,我们要在函数里修改实参的值或者为为变量起一个别名,我们会使用指针;在C++中,除了可以使用指针外,还可以使用引用。

引用(指针)的作用:

1、在函数中可以修改实参的值。

2、解决函数无法返回多个值的问题。

3、避免参数传递时不必要的变量复制。

引用与指针的区别:

1、指针是一个变量,它保存另一个变量的地址;引用是一个变量的别名,它和另一个变量指向同样的地址。所以,引用比指针更加节省空间。

2、引用在创建时必须初始化,不能为空,指针可以为空指针。

几点注意:

1、指针是一个变量,所以可以有指针的引用;引用只是一个别名,所以没有引用的指针或者引用的引用,因为引用和指针都是对一个变量而言,既然引用不是一个变量,那就不存在引用的指针或者引用的引用了。

2、void引用不合法,因为void只是语法上一个类型,其实质上并不是一个类型。void指针是合法的,任何类型的指针都可以隐式传给void指针,void指针传给其它类型的指针则要显式转换。

3、引用数组不合法。

#include <iostream>
using namespace std;

void test();
void swap1(int a,int b);
void swap2(int &a,int& b);
void swap3(int* a,int* b);

int main(int argc,char** argv){
	int num=0;
	int& r_num=num;
	cout << "num=" << num << ",r_num=" << r_num << endl;

	r_num=7;
	cout << "num=" << num << ",r_num=" << r_num << endl;
	cout << "num's ref=" << &num << ",r_num's ref=" << &r_num << endl;

	int* p_num=#
	cout << *p_num << endl;

	test();

	int a=10,b=20;
	cout << "before swap:a=" << a << ",b=" << b << endl;
	swap1(a,b);
	cout << "after swap1:a=" << a << ",b=" << b << endl;
	swap2(a,b);
	cout << "after swap2:a=" << a << ",b=" << b << endl;
	swap3(&a,&b);
	cout << "after swap3:a=" << a << ",b=" << b << endl;

	return 0;
}


void test(){
	int* p_a=NULL;
	int*& r_p_a=p_a;
	int b=10;
	r_p_a=&b;
	cout << *p_a << b << endl;
}

void swap1(int a,int b){
	int temp=a;
	a=b;
	b=temp;
}

void swap2(int &a,int& b){
	int temp=a;
	a=b;
	b=temp;
}

void swap3(int* a,int* b){
	int temp=*a;
	*a=*b;
	*b=temp;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值