好好学习,天天向上,自学网欢迎您!
当前位置:首页 >  考试 >  计算机类 > 内容页

C语言中函数之间地点传送体式格局

2021-09-05 19:58:55计算机类访问手机版77

  C语言函数之间地点传送体式格局

  导语:C语言中函数之间的数据传送体式格局有值传送、引用传送、地点传送。下面就由小编为大师介绍一下C语言中函数之间地点传送体式格局,欢送大师阅读!

  1 函数之间数据传送体式格局分类

  C语言顺序是由函数构成的。计划C语言顺序时,凡是将一个大的顺序按功效分红多少个较小的模块,每一个模块编写成布局清晰、接口复杂、简单懂得的顺序段,即函数。这种办法可设立建设公用模块,打消反复工作,进步顺序开发服从。[1]从函数的方式来看,函数可分为无参函数和有参函数。在调用有参函数时,主调函数与被调用函数之间有数据传送,也就是说,主调函数可以将数据传送给被调函数使用,被调函数中的数据也能够带返来给主调函数使用。

  值传送:数据只能从实参单向传送给形参,称为“按值”传送。当根本范例变量作为实参时,在函数调用过程当中,形参和实参占据差别的存储空间,形参的改动对实参的值不发生任何影响

  引用传送:使实参和形参共用一个地点,即所谓“引用传送”。这种传送体式格局,不管对哪一个变量进行点窜,都是对同一地点内存空间的内容进行点窜,其实参变量与它的引用即形参变量,总是具有不异的值。比方顺序:

  2 函数之间的地点传送

  2.1 形参为指针变量时函数之间的数据传送。假如函数的形参为指针范例时,对应的实参范例必需与形参的基范例不异。

  比方顺序:调用swap函数,用指针传送的体式格局互换主函数中变量x和y中的数据。

  函数之间值的传送是单向传送,也就是说函数只能经由过程实参把值传送给形参,若形参值改动,对实参不会发生影响;把数据从被调函数返回到主调函数的独一道路就是经由过程return语句,且只能返回一个数据。若是采纳以上经由过程传送地点值的体式格局,可以在被调用函数中对主调函数中的变量进行引用,经由过程改动形参的值而让实参的值失掉相应改动,这样就能够实现把多个数据从被调用函数返回到主调用函数。

  2.2 一维数组名作实参时函数之间的数据传送。函数之间在进行数据传送时,数组元素可以作为实参传送给形参,这时候的数组元素与普通变量一样,这种传送实际上就是值的传送。在C语言中,一维数组是由多少范例不异的数组元素构成的,因为数组名本是一个地点值,凡是可以把数组名作为实参传送,对应的形参就用指针变量,其基范例与数组的范例要求分歧。在函数间进行数据传送时,可以经由过程此指针变量来引用主调函数中对应的数组元素,从而可以实现对主调函数中对应的数组元素进行数据处置。

  当数组名作为实参时,函数调用arrina对应的形参除了指针外,对应函数首部还可以写成arrinint pa[]和arrinint pa[N]两种方式。虽说明的方式与数组的阐明不异,但C编译顺序时都把pa处置成以上的指针方式。别的,上例中被调用函数除了经由过程指针引用数组元素*pa+i外,还可以写成pa[i]的方式。

  2.3 二维数组名作实参时函数之间的数据传送。当二维数组名作为实参时,被调函数的形参必需是一个行指针变量。比方,若主函数有以下二维数组界说:double a[M][N];则被调函数fun的首部可以是以下三种方式之一:1fun double *pa[N];2fun double pa[M][N];3fun double pa[ ][N]。以上不管哪一种方式,与一维数组数据传送一样,系统都将把pa处置成一个指针,但是一个行指针。其处置体式格局一样,系统只为形参斥地一个寄存地点的存储单位。

  2.4 指针数组作实参时函数之间的数据传送。当指针数组作为实参时,对应的.形参该当是一个指向指针的指针。因为函数传送的是一维数组指针数组名,所以参数的界说与2.2中的一维数组名作实参的方式类似。

  3 结束语

  引用传送固然可以经由过程改动形参的值而影响实参,操纵比拟机动,但进行批量数据传送有分明缺陷。对数组多个元素以及范围较大的布局体数据进行操纵,只能选用地点传送的体式格局,这种传送体式格局只需在被调函数中斥地一个寄存地点的4字节的存储空间,不必要别的斥地形参的存储空间,实际参数和方式参数对应于不异的内存单位,因此,对方式参数的操纵也就是对实际参数的操纵。这种传送体式格局服从高,应用机动,功效强大。

TAG标签: 函数 传递 语言 地址 方式