引用和const

引用

引用的定义
类型& 引用变量名称-=变量名称
&和类型结合称之为引用符号,不是取地址符号,代表别名意思

int main()
{
	int a = 10;
	int b = a;
	int& c = a;
	a += 10;
	cout << "a= " << a << "c= " << c << endl;   //a=c=20
	c += 10;
	cout << "a= " << a << "c= " << endl;  //a=c=30

	cout << "&a: " << &a << endl;
	cout << "&c: " << &c << endl;//&a=&c

}

1. 引用的特点

int main()
{
	int a = 10, b = 20;
	//int& x;没有空引用
	int& x = a;//在定义引用的时候,必须初始化 利用已有的变量进行初始化
	//int&& y = x;//没有引用的引用
	return 0;
}

2.引用的例子

//用c交换两个值
void Swap_int(int* ap, int* bp)
{
	assert(ap != NULL && bp != NULL);     //有空指针,所以要判空
	int tmp = *ap;
	*ap = *bp;
	*bp = tmp;
}
//用引用
void Swap(int& x, int& y)
{
	int tmp = x;                          //没有空引用,不用判空
	x = y;
	y = tmp;
}
int main()
{
	int a = 10, b = 20;
	cout << "a= " << a << "b= " << b << endl;
	Swap_int(&a, &b);
	Swap(a, b);
	cout << "a= " << a << "b= " << b << endl;
	return 0;
}

3. 引用和const关系
3.1 普通变量,const加的位置

int main()
{
	int a = 10;
	int& b = a;//普通变量用普通引用,也可以用常引用,但不可以改变值
	b += 10;
	int const& c = a;//const 修饰的是&,c是常值引用,c得值不能改变  c+=10是error
	int& const x = a;//const修饰的是x,系统会忽略这个const,因为它修饰x
}

3.2 常变量

int main()
{
	const int a = 10;
	//int& x = a;//x+=10;不允许
	const int& y = a;//常变量利用常引用
}

4. 函数设计时候的形参

void fun_a(int x) {}//值传递,形参的改变并不会传给形参
void fun_b(int& y) {}//利用引用,形参的改变就可以影响到实参,应为形参是实参的别名,形参变了,实参自然就变了
void fun_c(const int& y) {}//const修饰引用,形参是实参的别名,但是形参不可以改变,不能通过形参改变实参

5. 常引用

int main()
{
	int a = 10;
	const int b = 10;//一般把常引用称为万能引用
	const int& x = a;//常引用引用普通变量
	const int& rx = b;// 常引用引用常变量
	const int& ry = 100;//常引用引用字面常量(这是底层是tmp=100,const int& rz=tmp,ry+=10不允许)
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值