C++学习笔记07,C++核心编程

//引用

  //作用:给变量起别名
  //语法:数据类型 &别名 = 原名

1、基本使用

int main3()
{
	int a = 10;
	int& b = a;//创建引用

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	b = 20;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	return 0;
}

2、引用的注意事项

//1、引用必须初始化
//2、引用在初始化后不可改变

int main4()
{
	//int& b;	//错误,创建的同时必须初始化
	int a = 10;
	int c = 20;
	int& b = a;

	b = c;	//赋值->可以

	//int& b = c;	//错误,引用不能重定义

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

	return 0;
}

3、引用做函数参数

//作用:函数传参时,可以利用引用让形参修饰实参
//优点:简化指针修改实参

void swap01(int a, int b)	//值传递
{
	int temp = a;
	a = b;
	b = temp;
}
void swap02(int* a, int* b)	//地址传递
{
	//int temp = *a;
	//*a = *b;
	//*b = temp;

	int *temp = a;	//只是交换了指针 a 和 b 的地址,没有交换指针所指向地址内的值
	a = b;			//(只是交换了*a *b 的值,主函数中a b 的值没有交换,所以主函数打印结果没变化
	b = temp;

	//cout << *a << endl;	//可以交换a b 的值
	//cout << *b << endl;
}
void swap03(int& a, int& b)	//引用传递
{
	int temp = a;
	a = b;
	b = temp;
}
int main5()
{
	int a = 10;
	int b = 20;

	//swap01(a, b);
	swap02(&a, &b);
	//swap03(a, b);

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	system("pause");
	return 0;
}

4、引用做函数返回值

//函数的调用可以作为左值
//注意:不要返回局部变量的引用

int test03()
{
	int a = 10;	//局部变量,存放在栈区
	return a;
}
int& test04()
{
	static int b = 20;	//静态变量,全局区,程序结束后释放
	return b;
}
int main6()
{
	//不能返回局部变量的引用
	//int& x = test03();
	//cout << "x = " << x << endl;
	//cout << "x = " << x << endl;

	
	int &y = test04();
	cout << "y = " << y << endl;
	cout << "y = " << y << endl;
	
	//函数的调用可以作为左值
	test04() = 100;	//相当于 b = 100; 用原名对 b 进行修改
	cout << "y = " << y << endl;	//y 是 b 的别名
	cout << "y = " << y << endl;

	return 0;
}

5、引用的本质

//本质:在C++内部实现是一个指针常量

void test05(int& x)	//发现是引用,自动转换为 int* const x = &a;
{
	x = 100;	//x是引用,自动转换为 *x = 100;
}
int main7()
{
	int a = 10;

	int& b = a;	//本质:编译器自动转换为 int* const b = &a; 指针常量的指针指向不可以修改,即引用不可以修改

	b = 20;		//本质:内部发现b 是引用,自动转换为:*b = 20;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	test05(a);
	cout << "a = " << a << endl;

	return 0;
}

6、常量引用

//作用:常量引用主要用来修饰形参,防止误操作 利用const修饰形参,防止形参改变实参

//打印数据的函数
void test06(const int& x)//只是打印函数,不希望其修改主函数中的实参,故加const修饰形参
{
	//x = 100;	//误操作,修改了主函数的实参
	cout << x << endl;
}
int main8()
{
	int a = 10;
	int& b = a;	//正确

	//int& c = 10;	//引用必须引一块合法的内存空间,10 为常量,存放在全局区
	const int& c = 10;	//加const后,编译器将代码修改为:int temp = 10; const int & c = temp;
	//c = 20;	//加const后,变为只读,不能修改

	test06(a);

	return 0;
}

(哔哩哔 哩黑马程序员 C++教程 学习笔记,如有侵权请联系删除)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值