引用

引用,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 关键词

  • 一、引用基本用法

    • 1.变量的引用
    • 2.数组的引用
  • 复习关键词


关键词

按引用传递,变量的引用,数组的引用



一、引用基本用法

引用就是取别名,使用别名 *** 作
引用是c++对c的重要扩充。


在c/c++中指针的作用基本都是一样的,
但是c++增加了另外一种给函数传递地址的途径,这就是按引用传递(pass-by-reference),
它也存在于其他一些编程语言中,并不是c++的发明。


变量名实质上是一段连续内存空间的别名,是一个标号(门牌号)
程序中通过变量来申请并命名内存空间
通过变量的名字可以使用存储空间

对一段连续的内存空间只能取一个别名吗?
c++中新增了引用的概念,引用可以作为一个已定义变量的别名。


1.变量的引用

Type & 别名 = 原名; (引用必须初始化)

//1. 认识引用
void test01(){
	int a = 10;
	//给变量a取一个别名b
	int & b = a;
	cout << "a:" << a << endl;
	cout << "b:" << b << endl;
	cout << "------------" << endl;
	// *** 作b就相当于 *** 作a本身
	b = 100;
	cout << "a:" << a << endl;
	cout << "b:" << b << endl;
	cout << "------------" << endl;
	//一个变量可以有n个别名
	int& c = a;
	c = 200;
	cout << "a:" << a << endl;
	cout << "b:" << b << endl;
	cout << "c:" << c << endl;
	cout << "------------" << endl;
	//a,b,c的地址都是相同的
	cout << "a:" << &a << endl;
	cout << "b:" << &b << endl;
	cout << "c:" << &c << endl;
}

注意事项:

  • 引用同时必须初始化,不能只引用而不赋初值
  • 引用并初始化之后不能改变为其他变量的引用。



//2. 使用引用注意事项
void test02()
{
	//1) 引用必须初始化
	int & ref; //报错:必须初始化引用
	//2) 引用一旦初始化,不能改变引用
	int a = 10;
	int b = 20;
	int & ref = a;
	ref = b; //不能改变引用
}
2.数组的引用

不能建立引用的数组,可以建立数组的引用。


引用的数组:即定义一个数组,数组中存放的元素都是"引用",但这个明显就是不合法的,
因为引用只是取了一个别名,本身并不占用内存,而数组是会占用内存的,声明引用数组就没有办法分配空间,所以引用的数组是错误的。



示例:
int array[2]={1, 2};
int & a[] = array //可以理解为(int&) a[],即a为数组,数组中的元素为引用。


//3) 不能建立引用数组
	int arr[10];
	int & ref[10] = arr;//报错:不能声明引用的数组

数组的引用:对数组名取一个别名
int array[2]={1, 2};
int (&a)[2]= array; //a为引用,引用对象为array
a[0]=3;
cout<

//建立数组引用方法一
int arr[10];
for (int i = 0; i < 10;i ++)
{
arr[i] = i+1;
}
int(&f)[10] = arr; 
for (int i = 0; i < 10;i++)
{
		cout << f[i] << " ";
	}
	cout << endl;
//建立数组引用方法二
	typedef int ArrRef[10];//声明一种类型,ArrRef是一种type
	int arr[10];//定义一个数组,命名为arr
	ArrRef & f = arr;//根据改名格式,取新名字为f
	for (int i = 0; i < 10;i ++){
		aRef[i] = i+1;
	}
	for (int i = 0; i < 10;i++){
		cout << arr[i] << " ";
	}
	cout << endl;
复习关键词

按引用传递,变量的引用,数组的引用`

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/589655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-13
下一篇 2022-04-13

发表评论

登录后才能评论

评论列表(0条)

保存