C++中的引用

来源:互联网 发布:php图像乱码 编辑:程序博客网 时间:2024/06/08 12:36

“引用“实际上是给一个已知变量起个别名,对引用的操作也就是对被它引用的变量的操作。
C++中的变量名对应着内存的存储位置,可以使用一个特定内存地址访问到它。
引用则引入了变量的另一个名字(别名), 它和这个变量具有同一内存地址。
引用必须进行初始化,而且一旦初始化后,就不能再成为其它变量的别名。
声明一个引用的格式如下:
数据类型 &引用名 = 已定义的变量名;
例如:
#include <iostream>using namespace std;int main(){int i = 2;int &j = i;i = 3;    //改变i或j的值,另一个值也随之改变。//j = 5;cout << "i = " << i << endl;cout << "j = " << j << endl;return 0;}



常引用
使用const修饰符可以声明引用, 被const声明的引用为常引用,不能通过常引用更新对象的值。
定义格式如下:
const 类型 & 引用名

#include <iostream>using namespace std;int main(){int m = 10;const int &n = m;m = 5;  //正确:可以更新m的值//n = 5;  //错误:不能通过n更新m的值cout << "m = " << m << endl;cout << "n = " << n << endl;return 0;}


在引用作为参数传递时:

#include <iostream>using namespace std;void swap(int &x, int &y){int temp;temp = x;x = y;y = temp;}int main(){int a = 3, b = 5;swap(a, b);cout << "a = " << a << endl;cout << "b = " << b << endl;return 0;}

函数swap(int &x, int &y)就是形参的引用声明。
在调用swap(a, b)时, 相当于执行:int &x = a, int &y = b;


引用作为返回类型
引用返回函数的原型声明形式为:
类型名 & 函数名(形式参数表);

#include <iostream>using namespace std;int &add(int &x, int &y){//int z;      //错误//z = x + y;   //错误//return z;  // 错误:局部自动型变量在调用后不存在,不能作为引用返回y = x + y;  // 正确:内存空间在本次函数调用后仍然存在return y;   // 正确}int main(){int a = 3, b = 5, sum;sum = add(a, b);cout << "sum = " << sum << endl;return 0;}

说明:
(1)."&"不是取地址符, 而是引用运算浮
(2).在声明一个引用的同时,如果不是作为函数的参数或返回值类型,就必须对它进行初始化,
来明确引用是哪一个变量的别名,以后在程序中不可改变这种别名关系。
(3).引用只是某一个变量的别名,系统不为引用另外分配内存空间,与所代表的变量占同一内存
(4).并不是任何类型的数据都可以有引用,不能建立void型引用,引用的引用,指向引用的指针,
引用数组。


0 0