C++中使用引用作为函数参数的优点

1.传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标 对象(在主调函数中)的操作。
2.使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的 副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比 用一般变量传递参数的效率和所占空间都好。
3.使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用”*指针变量名”的形式进行运算,这很容易产生错误且程序的阅 读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
时间: 2024-09-29 04:38:43

C++中使用引用作为函数参数的优点的相关文章

将“引用”作为函数参数有哪些特点

(1)传递引用给函数与传递指针的效果是一样的.这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作. (2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作:而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本:如果传递的是对象,还将调用拷贝构造函数.因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好. (

[c++学习笔记]反汇编角度看变量名和引用作为函数参数

1:默认情况下即以变量名作为函数参数时进行值传递 从反汇编中可以看出以下几点: 1:默认情况下进行的是值传递(mov) 2: 函数调用中参数的传递是从右向左依次传递的 2:以引用传递参数实际上传递的是地址,不是变量 从反汇编中可以看出以下几点: 1:lea 取地址操作符,所以以引用作为参数时传递的是地址 2: 函数调用中参数的传递是从右向左依次传递的 版权声明:本文为博主原创文章,未经博主允许不得转载.

[C++] 变量、指针、引用作函数参数的区别

//============================================================================ // Name : CppLab.cpp // Author : sodino // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //===============================

关于C程序中main()函数参数的使用

参考网上的说法,关于自己对于main函数参数的思考 1 函数形式: int main(int argc,char * argv[]) 2 参数1: argc 表示参数的个数 3 参数2: argv 是字符串数组, 下标从 0 开始,第一个存放的是可执行程序的文件名字,然后依次存放传入的参数 4 5 运行下面的语句 6 printf("可执行程序 %s ,参数个数为:[%d], 运行输出:[%s]\n",argv[0] ,argc,argv[1]); 7 8 输出结果 9 可执行程序 .

JavaSE8基础 多态扩展性 父类引用作为函数参数,调用所装子类对象的重写方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Person { public void sayHello() { System.out.println("hello person"); } } class Javaer extends Person{ public void sayHello() { System.out.print

C/C++语言中的函数参数传参三种对比

学了很长时间C/C++有时指针方面还是有点乱. 希望大神发现如果下面有不对的地方请指出.我发现之所以我乱就是因为中文表述不准确的问题,比如 ,地址值和地址 #include <iostream> #include <string> using namespace std; void swap1(string* str1,string* str2){// 1.对象指针作为函数参数 //影响实参 cout<<&str1<<" "<

C++中的引用

引用就是某个目标变量的别名,对引用的操作与对变量的直接操作效果完全相同. 引用的声明方法:类型标识符 &引用名=目标变量名: 如下:定义引用ra,它是变量a的引用,即别名. int a; int &ra=a; 1)  声明一个引用,必须进行初始化. 2)引用声明完毕后,相当于目标变量有两个名称即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名. 3)引用本身不是一种数据类型,因此引用本身不占存储单元,系统也不会给引用分配存储单元. 4)不能建立数组的引用.因为数组是一个由若干个

Javascript进阶(7)---函数参数

arguments对象 在JavaScript中,谈到函数参数,就不得不说一说那个熟悉又陌生的argunemts arguments对象用于承载调用函数时候传入的参数 arguments不是一个数组,但是十分类似一个Array,有length属性,也可以用下标去访问 arguments对象的长度是由实参个数而不是形参个数决定的.形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠.对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的

(struct)结构体变量作为函数参数调用的方法小结

结构体变量.结构指针变量.结构数组作为函数的参数应用实例分析 struct stud { long int num; float score; }; /*结构体变量作为函数的参数,修改之后的成员值不能返回到主调函数*/ void funvr(struct stud t) { t.num=2000101; t.score=71.0; } /*结构体数组作为函数的参数,修改后的元素的成员值能返回到主调函数*/ void funar(struct stud t[]) //void funar(stru