(2020.11.26 Thur)
引用变量是一个别名,它是某个已经存在的变量的另一个名字。一旦把引用初始化微某个变量,就可以使用该引用名称或变量名称来指向变量。
创建引用
变量名相当于变量附属在内存位置中的标签,可以把引用当成是变量附属在内存位置中的第二个标签,可通过原始名或引用名来访问变量内容
int x = 15;
int& y = x; // y是一个初始化为x的整形引用
cout<<x<<endl;
cout<<y<<endl;
引用必须初始化,无空引用,并且引用不分等级。
把引用作为函数参数
#include <iostream.h>
using namespace std;
void swap(int& x, int& y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
}
void main()
{
int a = 100, b=300;
cout<<'a and b: '<<a<<', '<<b<<endl;
swap(a, b);
cout<<'a and b after swap: '<<a<<', '<<b<<endl;
}
swap函数的形参是两个引用变量,main函数中,定义两个整形变量a和b,并初始化赋值,在调用交换函数swap时,形参(引用变量)指向实参变量单元,从而改变实参的值。
把引用作为返回值
使用引用来替代指针,会是C++程序更容易阅读和维护。C++函数可以返回一个引用,方式与返回一个指针类似。当函数返回一个引用时,则返回一个指向返回值的隐式指针。这样,函数就可以放在赋值语句的左边。
#include <iostream.h>
using namespace std;
int a[]= {2,6,8,9,10};
int& value(int i)
{
return a[i];
}
int main()
{
int i;
for (i=0;i < 5; i++)
{
cout<<'a['<<i<<']=';
cout<<a[i]<<endl;
}
value(1) = 10;
value(3) = 20;
cout<<'after reference'<<endl;
for (i=0;i < 5; i++)
{
cout<<'a['<<i<<']=';
cout<<a[i]<<endl;
}
return 0;
}
先定义了全局数组a,并初始赋值,定义一个int型的引用函数value(),定义了一个整形的形参i,该函数的返回值应该是引用类型的数据。在main()函数中,使用for循环,先遍历原数组a,再调用函数value(),修改数组a中的元素,并返回第i个元素的引用。最后循环打印a。
Reference
1 聚慕课教育研发中心 编著,C++从入门到项目实践(超值版),清华大学出版社
网友评论