C++语言中关于函数参数传递方式的探讨

时间:2022-09-18 08:38:06

C++语言中关于函数参数传递方式的探讨

摘要:在C+ +程序设计函数调用过程中,函数参数的传递是至关重要的内容,参数传递方式不同,其传递的内容也不同类型,在程序设计过程中,选择恰当的参数传递方式,不仅可以使程序更加简洁,同时可以提供程序的运行效率,该文较为全面的论述了c++中函数参数传递的几种常见方式以及各种方式的优点及区别。

关键词:C++;函数调用;参数传递

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)21-5116-03

Discussion on the Function Parameter Passing in C++ Programming

SUN Qin

(Gansu Agricultural University, Lanzhou 730070, China))

Abstract: In the process of function call of C+ + programming, the function parameter passing is of the utmost importance. When the methods of parameter passing are different, the contents passed are also of different styles. In the programming, selecting proper methods of parameter passing can not only simplify the program, but also can promote the operation efficiency of the program. This paper gives a com prehensive discussion about several common methods of the function parameter passing in C+ + as well as their advantages and their differ ences.

Key words: C++; function call; function parameter passing

C++语言是在C语言的基础上扩充了面向对象的概念和相应的处理机制而形成的一种混合型的程序设计语言,C++全面兼容C。在一个C/C++程序中,为避免主函数庞杂、头绪不清,阅读和维护困难,经常用模块化程序设计的思路,采用“组装”的办法简化程序设计的过程,即事先编好一批实现各种不同功能的函数,把它们保存在函数库中,需要时直接用。C/C++程序可由一个主函数和若干个其他函数构成,主函数调用其他函数,其他函数也可以互相调用。在程序设计中善于利用函数,可以减少重复编写程序段的工作量,同时可以方便地实现模块化的程序设计。

1 C++中的函数

从用户使用的角度看,函数有两种,一是库函数,它是由系统提供的;二是用户自己定义的函数,它是用以解决用户专门需要的函数。

从函数的形式看,函数分两类。

1)无参函数。无参函数一般用来执行一组特定的操作,一般不带回函数值。

2)有参函数。在调用函数时,主调函数通过参数向被调用函数传递数据,一般情况下,被调用函数调用结束时会向主调函数返回一个函数值供主调函数使用。

在函数调用过程中,主调函数调用被调函数时通过参数传递的值通常有两种:变量值或地址值;传递值的类型不同,结果截然不同。全面掌握形参和实参之间的数据传递,对分析函数的运行是十分关键的。在c++中,实参向形参传递数据可以带来两种结果,即通过函数调用可以改变实参对应存储单元的值和不能改变实参对应存储单元的值。其基本的参数传递有三种不同的方式,即传值、传地址和传递引用。

2 C++中的函数参数传递的几种方式

函数调用过程中的参数传递本质上是一种赋值过程,即传递“值”的过程,在调用函数时,函数的每个形式参数得到实际参数传递过来的一个“值”,该“值”可以是一个变量的值、一个变量的地址或是一个引用,“值”的类型不同结果也截然不同。下面举例说明函数调用时参数传递的几种方式。

2.1单向传值

当实参是普通变量时,函数形参为对应类型的变量,函数发生调用时,系统给形参分配存储单元,存放从实参复制过来的数值。形参存储单元在函数调用结束后当即释放,这种值传递是单向的,通过函数调用不会改变实参单元的值。

例1:

#include

void swap(int x,int y)

{int z;

z=x;

x=y;

y=z;

cout

}int main()

{int m,n;

Cin>>m>>n;

swap(m,n);

cout

return 0 ;

例1中main函数在调用swap函数时,把实参m,n的值传给了形参x、y,假设程序运行时输入的m和n的值分别为10、20,在swap函数中x和y的值进行了交换,而在主函数中实参m和n的值并没有发生相应的交互,即形参值的改变不能返回到实参中,因为x和y是swap函数内部定义的变量,属于局部变量,调用函数时,系统为其动态分配存储空间,调用结束后当即被释放,这种参数传递体现了传值的单向性。调用过程如图1所示。

图1

2.2传递地址

若在函数定义时将形实参数类型说明成指针或数组名,要调用这样的函数相应的实参就必须是地址值形式的实参,比如指针、变量的地址、数组名等。此时参数传递方式即为地址传递方式。这种传递地址的方式跟上述的按传递变量值不同,在调用过程中,把实参的内容传递给形参,即使得实参和形参指向了同一个存储单元,此时在函数调用过程中对形参的所有操作实际上同时是对实参的操作,因此,被调函数中形参指针所指存储单元中内容的改变都会影响到实参存储单元。传递地址是实参和形参的形式有以下几种:

上一篇:Project软件在国家骨干高职建设项目进度管理中... 下一篇:端口隔离技术在校园网实用性应用研究