c++中的引用

来源:互联网 发布:南欧四猪 知乎 编辑:程序博客网 时间:2024/06/09 16:21


c++的引用(可以看作一种意义上的指针)有三处:

1,作为变量;

2,作为函数形参;

3,作为函数返回值;


1,作为变量:int a;int b;int &x = a;这里x就是a的一个别名,也可以理解为a就是x,x就是a。但是x必须初始化,不能作为另一个变量的别名(例x = b),不能建立指向引用的指针(不能int *p = x;),不能建立指向引用的引用(例如不能int &z = x),不能建立数组的引用。其实感觉作为变量的引用用途不大。

2,作为函数形参:这是最常用的一种,我们需要将变量传递给函数处理,例如最简单的交换数值,其实我是很赞成多用引用作为形参的,因为可以避免复制变量,如果变量很大的话那么复制会导致效率很低,并且有些变量就不能复制,这时都要用引用形参。如果不想让函数改变变量的值则可以用const来修饰引用形参,其实变量传递给函数进来的是变量的地址。

3,作为函数返回值:最大的好处是不产生函数返回值的副本,效率很高,当返回函数引用时没有复制返回值,返回的是对象的引用,也就是返回对象本身。(函数返回引用:实际上是一个变量的内存地址,既然是内存地址的话,那么肯定可以读写该地址所对应的内存区域的值,即就是“左值”,可以出现在赋值语句的左边。)有限制:不能返回局部变量的应用,不能返回函数内部new分配的内存的引用。


#include <iostream>


using namespace std;


int b[10];
int& g(int x);
int main()
{
int a;
int &x = a;

a = 4;
cout << a << x << endl;
g(3) = 5;
cout << b[3] <<endl;
cin >> x;
return 0;
}
int& g(int x)
{
return b[x];
}


如果去掉&则编译不通过。

未完待续。。。。

原创粉丝点击