文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 关键词
一、引用基本用法
- 1.变量的引用
- 2.数组的引用
- 复习关键词
关键词
按引用传递,变量的引用,数组的引用
一、引用基本用法
引用就是取别名,使用别名 *** 作
引用是c++对c的重要扩充。
在c/c++中指针的作用基本都是一样的,
但是c++增加了另外一种给函数传递地址的途径,这就是按引用传递(pass-by-reference),
它也存在于其他一些编程语言中,并不是c++的发明。
变量名实质上是一段连续内存空间的别名,是一个标号(门牌号)
程序中通过变量来申请并命名内存空间
通过变量的名字可以使用存储空间
对一段连续的内存空间只能取一个别名吗?
c++中新增了引用的概念,引用可以作为一个已定义变量的别名。
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;
复习关键词
按引用传递,变量的引用,数组的引用`
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)