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

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

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

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

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

 

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

 

 

 

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

 

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

 

 

 

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

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

 

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

 

 

值传递和引用传递-----函数参数传递的两种方式

回顾:          在定义函数时函数括号中的变量名成为形式参数,简称形参或虚拟参数;在主调函数中调用一个函数时,该函数括号中的参数名称为实际参数,简称实参,实参可以是常量、变量或表达式。 注意...
  • u014041012
  • u014041012
  • 2015年04月06日 14:22
  • 3279

C++函数参数传递三种方式

当进行函数调用的时候,要填入与函数形式参数
  • cgl1079743846
  • cgl1079743846
  • 2014年05月28日 10:04
  • 6470

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

可变参数不能直接传递,可以借用 va_list void Log(const char * szFormat, ...); const QString GetFormatStr...
  • tangaowen
  • tangaowen
  • 2016年12月14日 14:01
  • 2424

C++,传递多个参数

include "stdafx.h" #include #include #include using namespace std; #include template ...
  • u012332679
  • u012332679
  • 2015年09月13日 11:30
  • 1507

c++中的参数传递问题

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

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

原文地址:http://blog.csdn.net/cocohufei/article/details/6143476; http://blog.chinaunix.net/uid-21411227-...
  • ccblogger
  • ccblogger
  • 2017年08月31日 20:44
  • 1191

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

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

函数传参的三种方式

1、传值:形参是实参的一种拷贝,单向传递,改变形参的值不会影响实参。(相当于复制一个文件,改变复制文件里面的内容,其源文件不会有影响) 2、传指针:通过形参间接改变实参所指向的变量的值。 3、传引用:...
  • qq_31849705
  • qq_31849705
  • 2016年08月02日 10:22
  • 1190

参数传递的三种方式

1.按值传递 void swap(int a, int b) { int temp = a; a = b; b = temp; } int main() { int a = ...
  • mishifangxiangdefeng
  • mishifangxiangdefeng
  • 2012年01月22日 14:39
  • 937

C++(笔记)容器(vector)作为函数参数如何传参

一、大致以下类型 void 函数名( vector< int> obj ); void 函数名( vector< int>* pobj ); void 函数名( const ve...
  • w_linux
  • w_linux
  • 2017年05月17日 17:51
  • 5372
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中函数调用时的三种参数传递方式
举报原因:
原因补充:

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