当前位置 : 主页 > 编程语言 > c语言 >

c++核心编程—引用

来源:互联网 收集:自由互联 发布时间:2023-09-06
一、引用的基本使用 作用:给变量取别名 语法: 数据类型 别名 = 原名 二、引用的注意事项 1、引用必须初始化 2、引用在初始化后,不可以改变 3、引用必须引一块合法的内存空间 示

一、引用的基本使用

作用:给变量取别名

语法:数据类型 &别名 = 原名

c++核心编程—引用_引用

二、引用的注意事项

1、引用必须初始化

2、引用在初始化后,不可以改变

3、引用必须引一块合法的内存空间

c++核心编程—引用_核心编程_02


示例:

c++核心编程—引用_引用_03

c++核心编程—引用_核心编程_04

c++核心编程—引用_引用_05

三、引用做函数参数

作用:函数传参时,可以利用引用的技术让形参修改实参

优点:可以简化指针修改实参


示例:

//值传递
void swap1(int a,int b) {
	int tem = a;
	a = b;
	b = tem;
}

//地址传递
void swap2(int* a, int* b) {
	int tem = *a;
	*a = *b;
	*b = tem;
}

//引用传递
void swap3(int& a, int& b) {
	int tem = a;
	a = b;
	b = tem;
}


int main() {

	int a = 10;
	int b = 20;
	
	swap1(a,b);
	cout << "值传递:a = " << a << endl;
	cout << "值传递:b = " << b << endl;

	swap2(&a, &b);
	cout << "地址传递:a = " << a << endl;
	cout << "地址传递:b = " << b << endl;

	//地址传递会改后,需要还原
	a = 10;
	b = 20;

	swap3(a, b);
	cout << "引用传递:a = " << a << endl;
	cout << "引用传递:b = " << b << endl;

	system("pause");
	return 0;
}

c++核心编程—引用_引用_06

总结,我们可以这样理解:

1、值传递:将实参拷贝一份给形参

2、地址传递:将实参的地址传给形参

3、引用传递:直接把实参本体,取个名字传给形参

四、引用做函数返回值

作用:引用时可以作为函数的返回值存在


注意:

1、不要返回局部变量引用(局部变量在栈区,调用结束会销毁)

说明:局部变量的引用作为返回值时,可能存在可以使用几次的情况,这是因为编译器会对局部变量进行几次保留,尽可能避免我们因此产生错误。

c++核心编程—引用_c++_07

2、对于引用作为返回值的函数,可以把函数调用作为左值,对其进行赋值

c++核心编程—引用_引用_08

结果显示,这种方法是可行的!!!

解释:

1、函数在调用后,返回一个引用变量,

2、对引用变量重新赋值为100

五、引用的本质

本质:引用的本质在c++内部实现是一个指针常量(指针是个常量)

示例:

c++核心编程—引用_引用_09

c++核心编程—引用_引用_10

总结:

1、对于:int& ref = a; 引用的初始化,自动转换为 int* const ref = &a;

2、对于:ref = 20; 引用的调用,自动转换为 *ref = 20;

3、c++推荐用引用计数,因为语法方便,引用的本质是指针常量,但是所有的指针操作编译器都帮我们做了

六、常量引用

作用:常量引用主要用来修饰形参,防止误操作,修改值

解释:在函数形参列表中,可以使用const修饰形参,防止形参改变实参

语法:const 数据类型& 引用名

c++核心编程—引用_引用_11

c++核心编程—引用_c++_12


示例:

c++核心编程—引用_引用_13

c++核心编程—引用_c++_14

喜欢就点赞收藏吧~


上一篇:暴击一棵树之------线索二叉树
下一篇:没有了
网友评论