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

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

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

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

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

 

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

 

 

 

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

 

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

 

 

 

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

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

 

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

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

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

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

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

函数调用的作用: ·用实参数向形式参数传递数据; ·为获得数据参数及在函数体中声明的变量分配存储空间; ·中断现行(调用)函数,把流程向被调用函数的入口处,开始执行被调函数。当参数表为空时,表示该函数...
  • xiven
  • xiven
  • 2009-05-31 21:15
  • 12263

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

C++,传递多个参数

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

C++-----利用括号递归实现的加减乘除

// 二叉树加减乘除.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace st...

C++---处理宽字符

#include "stdafx.h" #include #include #include Int main(){ //setlocale(LC_ALL,"chs"); //wchar_...

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

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

C/C++中函数传参方式简述

提到函数传参,必然就会面对“传值”和“传址”问题,C++中还会涉及到“传引用”。

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

当进行函数调用的时候,要填入与函数形式参数

C++中参数传递的两种方式:传值与传址及它们的区别

#include using namespace std; void mySwap(int *p1,int *p2); int main(){ int a=12; int b=44; int...

C++给函数传数组参数

在C++中,如果要给一个函数传入一个数组,一般都是传入两个参数一个数组指针和一个数组大小 例: void print_1 (int n, int *datas ) {     for (in...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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