一、引用的概念 引用(reference)是另一标识符的别名,可以说是C++的一种新的变量类型,是对C的重要扩充。当建立引用时,程序用另一个变量或对象(目标)的名字初始化它(即它代表了标识符的左值),此时,引用作为目标的别名而使用,对引用的改动实际就是对目标的改动。 为建立引用,在编程时应先写上目标的类型,再写引用运算符“&",然后是引用的名字。引用能使用任何合法的变量名,它可以在该变量出现的任何地方出现,这称为独立引用。 int a=10;//定义变量a int &b=a;//引用变量a a=100; b=20;//a=20; 如左图 声明b是对整数a的引用, 并且使其初始化为变量a的一个别名。一旦b同a的内存对象发生了联系,就不能改变,而且,对b的访问就是对a的访问,对a的访问也就是对b的访问。变量a和引用b共用同一内存空间 注意:类型后跟&是引用,其它地方则是取地址: int *p=&i;//取i的地址 printf("%d",&i);//非引用,取i的地址 二、引用的使用 引用变量 int i; int &j=i; int &k=i; i=1; j=2; k=3; printf("i=%d,j=%d,k=%d",i,j,k); 引用作函数参数 int add(int&a,int &b) { a=a+b; return a; } int _tmain(int argc, _TCHAR* argv[]) { int i,j,k; i=1; j=2; k=add(i,j); //i=i+j; printf("i=%d,j=%d,k=%d",i,j,k); getchar(); return 0; } 引用作函数返回值 int & add(int&a,int &b) { a=a+b; return a; } int _tmain(int argc, _TCHAR* argv[]) { int i,j; i=1; j=2; int &k=add(i,j); //i=i+j; k=888; printf("i=%d,j=%d,k=%d",i,j,k); getchar(); return 0; }
代码
#include "stdafx.h" #include <malloc.h> int & add(int&a,int &b) { a=a+b; return a; } int _tmain(int argc, _TCHAR* argv[]) { int i,j; i=1; j=2; int &k=add(i,j); //i=i+j; k=888; printf("i=%d,j=%d,k=%d",i,j,k); getchar(); return 0; }