C++引用

一、基本使用

本质:是一个指针常量
作用:给变量起别名
语法:数据类型 &别名=原名

int a=10;
int &b=a;

注:
1、引用必须初始化

int &b;//错误

2、引用在初始化后不可改变,但可以进行赋值操作

二、引用与函数

1、引用做函数的参数

可以简化指针修改实参,作用与地址传递相同

void myswap(int &a,int &b){
	int temp=a;
	a=b;
	b=temp;
}
int main(){
	int a=10,b=20;
	myswap(a,b);
}	

2、引用做函数返回值

(1)不要返回局部变量的引用

int& test01(){
	int a=10;//局部变量存放在四区中的栈区
	return a;
}
int main(){
	int &ref=test01();
	cout<<"ref="<<ref<<endl;//第一次可以正常输出是因为编译器做了保留
	cout<<"ref="<<ref<<endl;//第二次不能正常输出
	return 0;
}

(2)函数的调用可以作为左值

int& test02(){
	static int a=10;//静态变量存放在四区中的全局区
	return a;
}
int main(){
	int &ref=test02();
	cout<<"ref="<<ref<<endl;//第一次可以正常输出
	cout<<"ref="<<ref<<endl;//第二次可以正常输出
	test02()=1000;//对原名进行赋值
	cout<<"ref="<<ref<<endl;//通过别名输出,结果为1000
	return 0;
}

三、常量引用

可以防止在函数体中改变实参

int &ref=10;//不合法,引用必须引一块合法内存空间
const int &ref=10;//合法

四、引用的其他注意事项

1、不能建立引用的数组

char c[6]="hello";
char &rc[6]=c;   //错误

2、可以建立指针变量的引用

int i=5;
int *p=&i;
int *&pt=p;  //pt是一个指向整型变量的指针变量的引用,初始化为p

3、可以用const对引用加以限定,不允许改变该引用的值,但并不阻止改变引用所代表的变量的值

int i=5;
const int &a=i;
a=3;  //错误
i=3;  //合法

4、可用常量或表达式对引用进行初始化,但必须用const作声明

int i=5;
const int &a=i+3;
//相当于:
int temp=i+3;
const int &a=temp;

还可用于不同类型的变量对之初始化

double i=3.1415926;
const int &a=i;
//相当于:
int temp=i;
const int &a=temp;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值