关于C程序设计中数据传递问题的探究

时间:2022-08-20 07:31:29

关于C程序设计中数据传递问题的探究

摘要: 在程序设计中,不同形式的数据传递,决定着其功能的不同。C程序设计中,数据传递形式繁多,可以是直接的、可以是间接地。数据的传递,决定着程序的执行方式和执行结果。本文详细论述C程序中数据的传递形式及其特征。

关键词: 数据;参数;传递

中图分类号:TP312 文献标识码:A 文章编号:1006-4311(2014)07-0219-02

0 引言

C程序是函数的集合,函数间存在着低耦合,而函数内部存在着高内聚且功能独立、单一。不论是函数之间还是函数内部,都存在着数据的传递。为了描述的准确性,先将C程序中的数据、参数、传递作以限定。

数据,是指凡是能够输入到计算机里面,并能被计算机程序所识别和处理的符号总称。根据数据是否有意义(只针对具体的C程序而言),进一步将有意义的数据定义为信息。为了更直接的表述,还是将信息用作数据来描述。

参数,是表示未知数据的标识符。在C语言中,根据参数的定义形式和位置,参数分为函数中的参数和宏定义中的参数;函数中的参数又分为形式参数和实际参数。

传递,是指将数据(值或地址)赋给另外的标识符,从而使另外的标识符获得相应的数据值(值或地址)。

本文是基于C程序设计中的数据传递,将数据的传递分为规则性的形式数据传递、函数的数据传递和宏定义中参数的数据传递来进行讨论的。

1 数据传递

1.1 规则性的形式数据传递 规则性的形式数据传递,严格意义讲,并未存在真正意义上的数据传递,而是便于描述和理解,故用此种表述形式。规则性的形式数据传递,是指标识符相同,只是其值被更新的形式。

此例中,不存在实际的数据的传递,仅仅只是同一个标识符的值不断被更新。

该例原理如上,都是同一个标识符n,其值不断被更新(printf()的求值是从右向左进行的)。

总结:规则性的形式数据传递是相同标识符,其值被更新的过程,不属于严格意义上的数据传递,故称作形式数据传递。这种形式传递遵循相应语法规则既可。

1.2 函数的数据传递 函数的参数分为形式参数和实际参数。形式参数(简称为形参)表示是在未被调用之前,只表示存在这样的标识符而已,不占用存储空间。实际参数(简称为实参)表示实际占用存储空间的标识符。

在一个函数中调用另一个函数时,实参的值传递给对应的形参。从而实现了把数据由调用函数传递给被调用函数。还可使用参数把函数的处理结果返回到调用它的函数中。

1.2.1 实参向形参传递数据

①数据的复制方式。使用数据复制方式(亦称为传值方式)在函数间传递数据,就是把数据本身作为实参传递给形参,在被调用函数运行完毕后,并不将形参的结果传回给实参。

使用数据复制方式传递参数的特点:由于数据在传递方和被传递方占用不同的内存空间,所以接收数据的变量在被调用函数中无论怎样变化,都不会影响调用函数中相应实参的值。

②地址传递方式。使用地址传递方式(亦称传地址方式)传递数据时,传递的不是数据本身,而是存储该数据的地址。在这种方式中,以数据的存储地址作为实参调用一个函数,而被调用函数的形参必须是可以接收地址值的指针变量,并且它的数据类型必须与被传递数据的数据类型相同。

使用地址传递方式传递数据的特点:由于数据无论是在调用函数中还是被调用函数中都使用同一个存储空间,所以在被调用函数中对该存储空间的值做出某种变动后,必定会影响到使用该空间的调用函数中的变量值。

1.2.2 被调函数的处理结果的返回

①return传递数据方式。从被调用函数传递数据给调用函数,可采用函数的返回值来实现。返回值是被调用函数执行后返回给调用函数的一个数据,通过return语句来实现的。

使用return语句只能把一个返回值传递给调用函数,因此,C语言的函数都是单值函数。返回值本身可以是普通数据,也可以是地址。当然,C语言的函数中不要求必须要有return语句,没有return语句时,程序执行到达包围函数的下面的大括号时,自动返回调用函数。

1.3 全局变量传递数据 函数外部定义的变量属于全局变量,它在所有函数中都是可见的,所以,全局变量在函数间也可以传递数据。需要注意,从函数的封装性和软件工程角度考虑,此种方法还是尽量不要采用。

1.4 引用方式的数据传递 在VC++6.0中,提供了引用操作。这种操作可以用于函数的数据传递。

1.5 宏定义中的数据传递 宏的定义分为带参数和不带参数两种。带参数的宏定义中,也存在着数据的传递。其定义格式是:

#define 宏名(形参列表) 字符串。

此例中,实参是b和a,形参是x和y。具体的执行是:按命令行中指定的x%y从左至右进行置换,实参的值传给形参,展开计算。

2 总结

数据是程序的操作对象,程序的执行过程也就是数据传递的过程。程序设计本质就是算法设计,算法设计的目的就是处理数据,而处理数据不能出现“二义性”,数据流必须向着设计的正确方向进行,这就是数据传递。所以,数据的传递,决定着程序的执行方式和执行结果。

参考文献:

[1]李春葆.C程序设计考研指导[M].北京.清华大学出版社,2005.

[2]段景辉,袁敏.基于案例的任务驱动——以C程序设计为例[J].价值工程,2010(12).

[3]苑丽红.《C程序设计》教学策略研究[J].电脑知识与技术,2006(36).

上一篇:基于无线通信技术的语音提示器 下一篇:检验检疫数据中心的虚拟化技术应用