C语言中函数之间地址传递方式浅析_第1页
C语言中函数之间地址传递方式浅析_第2页
C语言中函数之间地址传递方式浅析_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语言中函数之间地址传递方式浅析超声波液位计摘 要 :C 语言中函数之间的数据传递方式有值传递、引用传递、地址传递。本文介绍了值传递和引用传递使用方法及优缺点。重点研究了地址传递在C语言程序设计中的应用,并通过程序阐述了这种传递方式效率高、应用灵活、功能强大等特点。关键词 : 函数调用 ; 地址传递 ; 数组 ; 指针 ;C 语言程序函数之间数据传递方式分类C语言程序是由函数组成的。设计C语言程序时,通常将一个大的程序按功能分成若干个较小的模块,每个模块编写成结构清晰、接口简单、容易理解的程序段,即函数。这种方法可建立公用模块,消除重复工作,提高程序开发效率。 1从函数的形式来看,函数可分为

2、无参函数和有参函数。在调用有参函数时,主调函数与被调用函数之间有数据传递,也就是说,主调函数可以将数据传递给被调函数使用,被调函数中的数据也可以带回来给主调函数使用。值传递 : 数据只能从实参单向传递给形参,称为“按值”传递。当基本类型变量作为实参时,在函数调用过程中,形参和实参占据不同的存储空间,形参的改变对实参的值不产生任何影响 2引用传递 : 使实参和形参共用一个地址,即所谓“引用传递”。这种传递方式,无论对哪个变量进行修改,都是对同一地址内存空间的内容进行修改,其实参变量与它的引用即形参变量,总是具有相同的值。例如程序 :函数之间的地址传递3形参为指针变量时函数之间的数据传递。如果函数

3、的形参为指针类型时,对应的实参类型必须与形参的基类型相同。例如程序:调用swap函数,用指针传递的方式交换主函数中变量x和y中的数据。函数之间值的传递是单向传递,也就是说函数只能通过实参把值传递给形参,若形参值改变,对实参不会产生影响 ; 把数据从被调函数返回到主调函数的唯一途径就是通过return 语句,且只能返回一个数据。若是采用以上通过传递地址值的方式,可以在被调用函数中对主调函数中的变量进行引用,通过改变形参的值而让实参的值得到相应改变,这样就可以实现把多个数据从被调用函数返回到主调用函数。一维数组名作实参时函数之间的数据传递。函数之间在进行数据传递时,数组元素可以作为实参传递给形参,

4、这时的数组元素与普通变量一样,这种传递实际上就是值的传递。在C语言中,一维数组是由若干类型相同的数组元素组成的,因为数组名本是一个地址值,通常可以把数组名作为实参传送,对应的形参就用指针变量,其基类型与数组的类型要求一致。在函数间进行数据传递时,可以通过此指针变量来引用主调函数中对应的数组元素,从而可以实现对主调函数中对应的数组元素进行数据处理。当数组名作为实参时,函数调用 arrin(a) 对应的形参除了指针外,对应函数首部还可以写成arrin(int pa) 和 arrin(int paN) 两种形式。虽然说明的形式与数组的说明相同,但C编译程序时都把pa处理成以上的指针形式。另外,上例中

5、被调用函数除了通过指针引用数组元素 *(pa+i) 外,还可以写成pai 的形式。二维数组名作实参时函数之间的数据传递。当二维数组名作为实参时,被调函数的形参必须是一个行指针变量。例如,若主函数有以下二维数组定义 :double aMN; 则被调函数 fun 的首部可以是以下三种形式之一:(1)fun ( double以上无论哪(*pa)N);(2)fun (double paMN);(3)fun ( double pa N)种形式,与一维数组数据传递一样,系统都将把 pa 处理成一个指针,但是一个行指针。其处理方式一样,系统只为形参开辟一个存放地址的存储单元。指针数组作实参时函数之间的数据传递。当指针数组作为实参时,对应的形参应当是一个指向指针的指针。因为函数传递的是一维数组指针数组名,所以参数的定义与2.2 中的一维数组名作实参的形式类似。 4结束语引用传递虽然可以通过改变形参的值而影响实参,操作比较灵活,但进行批量数据传递有明显缺陷。对数组多个元素以及规模较大的结构体数据进行操作,只能选用地址传递的方式,这种传递方式只需在被调函数中开辟一个存放地址的 4 字节的存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论