C++学习笔记(二)
C++的引用
简介
定义:引用变量是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,对引用的操作与对变量直接操作就是一样的。
声明方法:目标变量的类型 &引用名=目标变量名;
引用声明完毕后,相当于目标变量有两个名称,即该目标原名称和引用名,且该引用名不能再作为其他变量的引用名。
例子:int& a=i;
说明a是一个初始化为i的整型引用。
double& b=m;
说明b是一个初始化为m的double型引用。
引用与指针的不同
- 存在空指针但不存在空引用。引用必须连接到一块合法的内存。
- 指针可以在任意时刻指向任一对象。但是引用一旦被初始化,就不能被指向到另一对象。
- 指针可以在任何时间被初始化,但引用必须在创建时被初始化。
注意:(1)声明一个引用,不是新定义一个变量,它只表示该引用名是目标变量名的一个别名,因为引用不是一种数据类型,所以引用本身不占存储单元,系统也不给引用分配存储单元。所以,引用的地址与目标变量的地址相同。
(2)不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。
应用
引用作为函数的参数
先看一个典型的例子:
void swap(int &p1, int &p2) //此处函数的两个形参都是引用
{
int p;
p=p1;
p1=p2;
p2=p;
}
int main()
{
int a,b;
scanf(“%d%d”,&a,&b);
swap(a,b);
printf(“%d%d”,a,b);
return 0;
}
这个程序的作用是交换a,b的值。
注意:此时函数中对形参的各种操作实际上是对实参本身进行操作,而不是将实参变量或对象的值拷贝给形参。如果参数传递的数据较大时,建议使用引用作为函数的形参,这样会提高函数的时间效率,并节省内存空间。
常引用
常引用的声明:在引用的声明前加上const即可。
例如
int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确
作用:提高安全性。
引用作为返回值
要使引用作为返回值,定义函数时需要在函数名前加&。
优点:在内存中不产生被返回值的副本。
规则:
- 不能返回局部变量的引用。
- 可以返回类成员的引用,但最好是const。