待到山花烂漫时,她在丛中笑.
C/C++笔记(一)
上一篇 /
下一篇 2007-08-07 11:14:31
/ 个人分类:C/C++
三种函数传递参数方法:
一、按数值调用(call-by-value)
参数按值调用时,生成参数值副本并传给被调用函数,副本的改变并不影响调用者的原始变量值,这样可以防止意外的副作用影响开发正确、可靠的软件系统。
但是,按值调用的一个最大缺点是如果传递较大的数据项目,则复制这个项目要花费较长的执行时间。
return-value-type function-name(type value)
二、用引用参数,按引用调用(call-by-reference reference argument)
按引用调用时,调用者让被调函数能够直接访问调用者的数据,并允许修改其中的数据。引用参数是其相应的参数别名。要表示函数的参数是按引用传递的,只需要在函数原型中该参数类型后面加&,在函数首部出现的参数也要使用相同规则。
在函数调用中,只要指定了变量名,该变量就会通过引用传递。在被调用函数体中,通过参数名指定的变量实际上就是引用了调用函数中的原始变量,被调用函数可以直接修改原始变量。
在按值调用和按引用调用参数,所用的参数形式是相同的,都是只指定名称,如果不检查函数原型或函数定义要判断被调用函数是否修改了参数是不可能的,由于函数原型是强制的,因此编译器能顺利解决歧义性。
由于引用参数在被调用函数体内只指定名称,因此程序员可能把引用参数当作按值调用的参数,这样如果调用函数改变变量原始副本,则可能产生预想不到的副作用。
如果要传递较大的对象,用常量引用参数模拟按值调用的情况,避免较大对象副本开销。要指定引用常量在参数申明的类型说明符前面加const.
return-value-type function-name(type &value)
三、用指针参数,按引用调用(call-by-reference point argument )
指针和引用一样,也可以修改调用者的一个或几个变量,或将大的数据对象指针传递给函数而避免按值传递对象大的开销。接受地址参数的函数要定义接收地址的指针参数。
return-value-type function-name(type *value)
收藏
举报
TAG: