基本概念之将引用作为函数的参数有哪些特点?

问题:将“引用”作为函数的参数有哪些特点?

分析:

这道题不仅考差了对引用的理解和应用,同时考差了对函数的三种传递参数方式基本概念的理解。总结起来,有如下特点:

?  传递引用给函数与指针的效果是一样的。这时,被掉函数的形参就被当成原来主调函数中实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应目标对象的操作。

?  使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作,而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本,如果传递的是对象,还要调用拷贝构造函数。因此,当参数传递的数据较大时,用引用必用一般变量传递参数的效率更高,所占空间也更少。

?  使用指针作为函数的参数虽然也能达到跟使用引用相同的效果。但是,一方面,再被调函数中同样要给形参分配存储单元,在使用时需要重复使用以“指针变量名”的形式进行运算,这很容易产生错误且程序的可读性较差,另一方面,在主调函数的调用点处,必须用变量的地址作为实参。因而引用更容易使用更清晰。

时间: 2024-10-16 10:41:19

基本概念之将引用作为函数的参数有哪些特点?的相关文章

JavaSE8基础 抽象类的引用作为函数的参数 指向的一定是子类的对象

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

C++引用作为函数的参数

引用也可以作为一个函数的参数,如:我们定义交换两个数的函数swap,将函数的参数定义成引用的形式: 1 void swap(int &p1, int &p2) //此处函数的形参都是引用 2 { 3 int p; 4 p=p1; 5 p1=p2; 6 p2=p; 7 } 为了在程序中调用该函数,在相应的主调函数的调用点处直接以变量作为实参进行调用即可,而不需要对实参变量有任何的特殊要求.如上面定义的swap函数的主调函数可写为: int main() { int a,b; cin >

Python——变量的引用和函数的参数和返回值的传递方式

变量的引用 在python中,所有的变量都是指向地址,变量本身不保存数据,而是保存数据在内存中的地址.我们用下面的程序来理解: 1 a = 10 2 print(id(a)) 3 a = 11 4 print(id(a)) (利用id( )方法查看数据的地址) 输出结果为: 可以发现:修改变量的值,变量保存的地址随之改变. python中: 变量和数据是分开存储的 变量 中保存着数据在内存中的地址 我们把变量中记录数据的地址的行为,叫做 引用. 通俗的来说,在 Python 中,变量的名字类似于

c++将引用作为函数的参数---6

原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量别名.这种传递参数 的方法称为按引用传递.按引用传递允许被调用的函数能够访问调用函数中的变量.C++新增这项特性是对C语言的超越,C语言只能按值传递.按值传递导致被 调用函数使用调用程序的值得拷贝.当然,C语言也允许避开按值传递的限制,采用按指针传递的方式. 代码: #include <stdio.h> #include <iost

C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针

 目  录 1       开始学习C++.............................................................................................................. 4 1.1       C++的头文件.................................................................................................

将引用作为函数返回值的优缺点

格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本:(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的.因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!注意事项:(1)不能返回局部变量的引用.这条可以参照Effective C++[1]的Item 31.主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态.(2)不能返回函数内部new

Java调用函数传递参数到底是值传递还是引用传递

今天翻看微信上有关Java技术的公众号时,看到了一篇关于Java中值传递的问题,文章讨论了在Java中调用函数进行传参的时候到底是值传递还是引用传递这个面试时会问到的问题.之前也接触过类似的问题,但只是知道是值传递,具体到为什么,一直不是太清楚.今天看了一下,算是明白了,写个博客记录一下. 首先先声明一下,在Java中函数传参是值传递,不是引用传递.要弄清楚这个问题之前要先弄清楚什么是值传递,什么是引用传递. 值传递(pass by value):是指在调用函数时将实际参数复制一份传递到函数中,

js中函数传递参数,究竟是值传递还是引用传递?

记住真理: js函数传递参数,不管是简单数据类型,还是引用数据类型,都是值传递!! 下面是js红包书里面的例子: function setName(obj) { obj.name = "Nicholas"; obj = new Object(); obj.name = "Greg"; } var person = new Object(); setName(person); alert(person.name); // "Nicholas" 肯定

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

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