C++中函数调用时的三种参数传递方式

原创 2011年01月16日 00:06:00

在C++中,参数传递的方式是“实虚结合”。

  • 按值传递(pass by value)
  • 地址传递(pass by pointer)
  • 引用传递(pass by reference)

按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。这种传递是把实参表达式的值传送给对应的形参变量,故称这种传递方式为“按值传递”。

 

使用这种方式,调用函数本省不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。

 

 

 

如果在函数定义时将形参说明成指针,对这样的函数进行调用时就需要指定地址值形式的实参。这时的参数传递方式就是地址传递方式。

 

地址传递与按值传递的不同在于,它把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。

 

 

 

按值传递方式容易理解,但形参值的改变不能对实参产生影响。

地址传递方式虽然可以使得形参的改变对相应的实参有效,但如果在函数中反复利用指针进行间接访问,会使程序容易产生错误且难以阅读。

 

如果以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便、自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。

 

 

相关文章推荐

C++,传递多个参数

include "stdafx.h" #include #include #include using namespace std; #include template ...

c++ 中怎么传递可变参数

可变参数不能直接传递,可以借用 va_list void Log(const char * szFormat, ...); const QString GetFormatStr...

C++的参数传递机制

C++的参数传递机制  C++一共有三种传递方式:值传递(pass by value)、指针传递(pass by pointer)、引用传递(pass by reference)。 关键点:在...

c++中的参数传递问题

众所周知,在C++中调用函数时有三种参数传递方式:  (1)传值调用;  (2)传址调用(传指针);  (3)引用传递;  实际上,还有一种参数传递方式,就是全局变量传递方式。这里的“全局”变...

c++中函数参数传递(值传递、指针传递,引用传递)进一步认识

今天想写一个函数,从函数中把我需要的两个值传出来,由于传出来的值比较多,所以不考虑用return来返回,需要通过参数把修改后的值拉出来供我使用,很当然的就想到了用指针,但是值就是传不出来;使我对原有的...

函数传递参数的三种方式,以及它们的区别

函数传递参数的三种方式,以及它们的区别 1.按值传递(pass by value) 使用这种方式,调用函数本省不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参 ...

函数传参的三种方式

C++函数传参有三种方式,分别是按指针传参,按引用传参,按值传参。以两个数据交换是否成功为例。 1.首先是按指针传参 源代码: #include using namespace std; vo...

24.C语言函数传参详解

24.1.普通变量作为函数形参 24.2.数组和指针作为函数形参 24.3.结构体变量作为函数形参 24.4.传值调用与传址调用 24.5.函数形参和返回值 24.6.函数传参中使用const指针...
  • Rston
  • Rston
  • 2016年03月22日 16:03
  • 2330

js函数之函数传参

前言 传字符串类型 传对象类型
  • B_qxzb
  • B_qxzb
  • 2015年12月17日 11:35
  • 5142

函数参数与函数调用(彻底理解值传递与引用传递)

函数调用的作用: ·用实参数向形式参数传递数据; ·为获得数据参数及在函数体中声明的变量分配存储空间; ·中断现行(调用)函数,把流程向被调用函数的入口处,开始执行被调函数。当参数表为空时,表示该函数...
  • xiven
  • xiven
  • 2009年05月31日 21:15
  • 13033
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中函数调用时的三种参数传递方式
举报原因:
原因补充:

(最多只允许输入30个字)