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
- C++引用&概念及用法
- C语言中指针的一些概念及用法
- JSP概念及用法
- mapReduce概念及用法
- JS 概念理解及引用
- Angular.js概念及用法
- linux cgroups概念及用法
- 引用 Invoke的用法(C#)
- C重要概念及难点
- C重要概念及难点
- 【C/C++】概念:指针和引用的区别
- 引用概念
- Apache Pig基础概念及用法
- block的概念及简单用法,通俗易懂
- getchar()与putchar()概念及相关用法
- OC语法--KVC概念及用法
- 二级指针(概念及用法)
- 抽象类概念用法及注意事项
- 解决中文PDF 因为未嵌入字体导致在某些环境下的乱码问题
- 【微信公众平台开发】借用微信内置图片浏览功能
- 矩阵的LU分解———学习笔记 ,转载自chinaunix
- hibernate修改数据库已有的对象【简化操作】
- Arduino制作温湿度计
- C++引用&概念及用法
- 异常
- 剑指offer--链表中倒数第k个结点-java
- UDP传输中文乱码、异常解决
- C++成员变量的初始化顺序问题
- 设计模式之单例模式
- Android入门——利用Canvas完成绘制点、圆、直线、路径、椭圆、多边形等2D图形
- 微信公众平台初试
- 九度OJ 1533 最长上升子序列 (基于贪心和二分查找)