易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++中的按值调用与按引用调用

 许多编程语言中的调用函数的两种方法是按值调用(call-by-value)和按引用调用(call-by-reference)。
参数按值调用传递时,生成参数值副本并且传给被调用函数,副本的改变并不影响调用者的原始变量值,这样就可以防止意外的副作用影响开发正确,可靠的系统。按值调用的一个缺点是,如果传递较大的数据项,则复制这个数据可能要占用相当长的执行时间。
而引用调用,调用者让被调用者函数能够直接访问调用者的数据,并且允许被调用函数能够修改其中的数据。
引用调用对性能有利,消除了赋值大量数据的开销。
下面为<<C++大学教程>>中介绍的例子:
#include<cstdlib>
#include<iostream>
using namespace std;
int squareByValue(int);
void squareByReference(int &);
int main(){
     int x = 2,z = 4;
     cout << "x = " << x << " before squareByValue\n"
             << "Value returned by squareByValue:"
             << squareByValue(x) << endl
             << "x= " << x << " after squareByValue\n" << endl;
     cout << "z= " << z << " before squareByReference" << endl;
     squareByReference(z);
     cout << "z= " << z << " after squareByReference" << endl;
     return 0;
}
int squareByValue(int a){
        return a *= a;
}
void squareByReference(int &cRef){
        cRef *= cRef;
}


相关文档:

C/C++——小编谈C语言函数那些事(15)

 C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
 
1.       parsfnm函数
 
parsfnm函数的功能是分析文件名,其用法为:char *parsfnm (char *cmdline, struct fcb *fcbptr, ......

混凝土强度评定系统1.1 c代码

#define NULL 0
#define LEN 10
#define OK printf("\n此组数据合格。\n")
#define NO printf("\n此组数据不合格!\n")
#define CN printf("\n%30c 伟成工作室荣誉出品 %c\n",17,16)
#include "stdlib.h"
#include "math.h"
static float min,ave;       
float *zwfloat(void ......

[随想]C/C++程序员

       刚刚看过这篇《30 years of C》,回想了这几年的学习历程。
      在大学里,我学习的第一门程序设计语言是C,但花时间最多的还是C++。大约五年前,开始啃《 C++编程思想》两卷本,用Dev-cpp在机器练习着书上的一个个例子程序,之后又学习了面向对象编程、STL、模板。凭着 ......

C/C++——小编谈C语言函数那些事(17)

C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
 
1.    registerbgidriver函数
registerbgidriver函数的功能是登录已连接进来的图形驱动程序代码,其用法为:int registerbgidriver(void(*driver)(void ......

C/C++——小编谈C语言函数那些事(18)

C程序是由一组或是变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。下面小编和大家分享下C语言中的函数。
 
1.     raise函数
raise函数的功能是向正在执行的程序发送一个信号,其用法为:int raise(int sig);程序实例如下:
#include <signal.h& ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号