c++学习第三讲---引用

1.引用的使用:

作用:给变量起别名。

语法:数据类型 + &别名 = 原名 (注:数据类型与原名类型一致)

int main()
{
	int a = 10;
	int& b = a;//a与b使用同一块内存

	b = 20;

	cout << a << endl;//20
	return 0;
}

2.引用的注意事项:

(1)引用必须初始化。---错误:int &b;

(2)引用在初始化后不可更改。

int main()
{
	int& b;//错误:未初始化

	int a = 10;
	int& c = a;
	int d = 20;
	c = d;//赋值操作,未更改引用对象,a=c=d=20

	return 0;
}

3.引用作函数参数:

作用:函数传参时,可以用引用让形参影响实参(代替指针)。

例:交换:

void mySwap(int& a, int& b)
{
	int ret = a;
	a = b;
	b = ret;
}
int main()
{
	int a = 10;
	int b = 20;
	mySwap(a, b);

	cout << a << endl;//20
	cout << b << endl;//10

	return 0;
}

4.引用作函数返回值:

用法:

int& test()
{
	static int a = 10;//静态变量,存放在全局区,在程序结束后由系统释放
	return a;
}
int main()
{
	int& ref = test();
	cout << ref << endl;//10
	return 0;
}

注:1.不要返回局部变量的引用:

int& test01()
{
	int a = 10;//局部变量
	return a;//错误,返回局部变量
}

2.函数的调用可以作为左值:

int& test02()
{
	static int a = 10;//静态变量,存放在全局区,在程序结束后由系统释放
	return a;
}
int main()
{
	int& ref = test02();
	cout << ref << endl;//10
	test02() = 1000;//作为左值修改a和ref的值
	cout << ref << endl;//1000
	return 0;
}

5.引用的本质:指针常量

引用的本质其实是一个指针常量。

如 int& ref = a;等价于int* const ref = &a;

其后的赋值等操作也自动解引用。

如 ref = 20; 等价于 *ref = 20;

既然为常量(const),也说明为什么引用在初始化后不可更改。

//发现是引用转换为int* const ref = &a;
void func(int& ref)
{
	ref = 100;//自动转换为*ref = 100
}
int main()
{
	int a = 10;
	func(a);
	cout << a << endl;//100
	return 0;
}

6.常量引用:

使用:例:const int& ref = 10;

int main()
{
	int a = 10;
	const int& ref = 10;
	//加上const之后,相当于编译器将代码改为
	/*int tem = 10;
	const int& ref = tem;*/
	return 0;
}

通常用法:用 const 来修饰形参,防止误操作改变实参。

void showValue(const int& a)
{
	a = 1000;//错误,加const后,不能修改a
	cout << a << endl;
}
int main()
{
	int a = 10;
	showValue(a);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值