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

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

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

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

时间: 2024-08-03 10:55:50

将“引用”作为函数参数有哪些特点的相关文章

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 //===============================

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

(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

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

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

C++函数参数-值,指针,引用

本文转载自SurpassLi的博文:http://www.cnblogs.com/lidabo/archive/2012/05/30/2525837.html,修改了部分代码和贴图,如有侵犯版权请与我联系删除.           以“ 值传递”方式向函数传递参数 在编写个人函数的时候,你将会受到C++中的一条基本的原则的限制:在默认的情况下,变量只能以值传递的方式传递给函数.这句话的意思是:被传递到函数的只是变量的值,永远不是变量的本身. 例如: void changeValue(int or

以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数

下面是单链表的数据结构 typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*Linklist; 1.以指针参数实现 void delete_x_1(LNode *head,ElemType x){//head为单链表头结点,删除结点的值为x LNode *l = head; LNode *p = head->next; while(p != null){ if(p->data == x){ l->next =

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

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