栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

10.C++之引用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

10.C++之引用

学习目标:

1.引用的定义
2.引用作函数参数
3.引用做函数的返回值
4.引用的本质


学习内容: 1. 引用的定义

引用的作用就是给变量起别名,具体语法为:
数据类型 &别名 = 原名;
注意:(1)引用必须初始化,比如

int a = 18;
int &b = a;//只能传入a的名称,不能传入a的值18

注意:(2)引用在初始化之后不能更改,比如

int a = 18;
int b = 28;
int &c = a;
int &c = b;//同一个别名不能多次使用,否则报错!

无论是别名还是原名,二者都属于同一内存,只要操作其一就会改变另一个的值

2. 引用作函数形参

作用:引用作函数的形参,可以修饰实参。
优点:可以简化指针
引用传递和地址传递都可以通过形参来修饰实参!!!

#include
using namespace std;
void swap1(int* a, int* b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
	cout << "a = " << *a << "t";
	cout << "b = " << *b << "t" << endl;;
}
void swap2(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "a = " << a << "t";
	cout << "b = " << b << "t" << endl;
}
int main()
{
	int a = 18;
	int b = 20;
	cout << "a = " << a << "t";
	cout << "b = " << b << "t" << endl;
	swap1(&a, &b);//调用指针
	swap2(a, b);//引用
	system("pause");
	return 0;
}

3. 引用做函数的返回值 3.1 不能返回局部变量的引用;
#include
using namespace std;
int& test()
{
	int a = 18;
	return a;
}
int main()
{
	int &ref = test();
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	system("pause");
	return 0;
}


总结:不能返回局部变量的地址和引用。这是因为局部变量在栈区,函数执行完后会自动释放!!!!!!!!当返回静态变量时,可以返回其引用。这是因为静态变量在全局区,其上的数据在程序结束后由系统释放!!!!!
局部变量在栈区:函数执行完毕!!
静态变量在全局区:整个程序结束后系统释放!!!

当返回静态变量时,可以返回其引用;

#include
using namespace std;
int& example()
{
	static int a = 18;
	return a;
}
int main()
{
	int &ref = example();
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	system("pause");
	return 0;
}

3.2 函数的调用可以作为左值
#include
using namespace std;
int& example()
{
	static int a = 18;
	return a;
}
int main()
{
	int &ref = example();
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	example() = 100;
	cout << "a = " << ref << endl;
	cout << "a = " << ref << endl;
	system("pause");
	return 0;
}

4. 引用的本质(选学)

引用的本质是:一个指针常量。主要是用来修饰实参,防止误操作。在函数形参列表中,可以加上const来现指实参改变。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号