C++引用&概念及用法

来源:互联网 发布:网络有利还是有害 编辑:程序博客网 时间:2024/05/29 12:59

一.概念

引用是变量的别名,对引用的操作与对变量的操作完全一样。引用符号&与C语言中取地址符号一样,含义不同。

引用的方法:类型标识符   &引用名  =  变量名

例如:

<strong>int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名</strong>


二.引用实例

1.引用作为函数参数


void swap(int &p1, int &p2) //此处函数的形参p1, p2都是引用{ int p; p=p1;p1=p2;p2=p; }//为在程序中调用该函数,则相应的主调函数的调用点处,直接以变量作为实参进行调用即可,而不需要实参变量有任何的特殊要求。如:对应上面定义的swap函数,相应的主调函数可写为:int main(void){int a=13,b=56;swap(a,b); //直接以变量a和b作为实参调用swap函数cout<<a<< ' ' <<b; //输出结果return 0;}

使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给 形参分配存储单元,形参变量是实参变量的副本;


2.常引用


例如:

int main(void){int a;const int &ra = a;//ra = 1;//错误  ra被const修饰不能修改a = 1;printf("%d %d\n",a,ra);}

3.引用作为返回值


#include <iostream>using namespace std;float temp; //定义全局变量tempfloat fn1(float r); //声明函数fn1float &fn2(float r); //声明函数fn2float fn1(float r) //定义函数fn1,它以返回值的方法返回函数值{temp=(float)(r*r*3.14);return temp;}float &fn2(float r) //定义函数fn2,它以引用方式返回函数值{temp=(float)(r*r*3.14);return temp;}void main() //主函数{float a=fn1(10.0); //第1种情况,系统生成要返回值的副本(即临时变量)//float &b=fn1(10.0); //第2种情况,可能会出错(不同 C++系统有不同规定)//不能从被调函数中返回一个临时变量或局部变量的引用float c=fn2(10.0); //第3种情况,系统不生成返回值的副本//可以从被调函数中返回一个全局变量的引用float &d=fn2(10.0); //第4种情况,系统不生成返回值的副本//可以从被调函数中返回一个全局变量的引用cout<<a<<c<<d;}


(1)以引用返回函数值,定义函数时需要在函数名前加&。

(2)用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本。




0 0
原创粉丝点击