c语言 函数之间 数据传递 |
您所在的位置:网站首页 › c语言子函数调用举例 › c语言 函数之间 数据传递 |
C语言中函数的数据传递方式有三种:值传递;地址传递;全局变量传递。 在调用有参函数时,主调函数和被调用函数之间有数据传递关系。 首先认识两个概念: 1、形式参数(简称“形参”又叫“虚拟参数”):在定义函数时函数名后面括号中的变量名称。 2、实际参数(简称“实参”):在主调函数中调用一个函数时,函数名后面括号中的参数。 一、值传递方式 实参向形参的数据传递是“值传递”,单向传递,只能由实参传向形参。 当形参为变量而实参为变量、某个数组元素、常量或表达式时,在函数调用过程中数据传递通常使用的是值传递方式。即在程序执行中,系统会给形参和实参分别分配内存单元,在函数调用时,程序将实参的值传递给形参,存在系统分配的内存单元中,供被调用函数使用,形参和实参使用不同的内存单元;函数执行完毕,形参不将处理后的值返回给实参,实参的值不变,被调用函数最多只能通过ruturn语句返回一个值给主调函数,形参的内存单元被释放。 在此程序中,通过把主调函数中被调用函数名后的实参(即变量的值)赋值给被调用函数的形参(变量),由被调用函数进行处理,从而实现主调函数与被调用函数间数据的传递。在这种数据传递方式中,函数最多只能返回一个值,具有一定的局限性。 example1. max函数: int max(int x,int y) { int z; z=x>y?x;y; return(z); } 主函数: #include int main() {int main (int x,int y); int a,b,c; printf(“please enter two integer numbers:”); scanf("%d,%d"&a,&b); c=max(a,b); printf(“max is %d\n”,c); return 0; } 主函数中max后a,b是实参。a,b是main函数中定义的变量,x,y是main函数的形式参数。实参a,b的值传递给形参x,y,在max函数中把x,y的大者赋给变量z,z的值作为函数值返回main函数,赋给变量c。 二、地址传递方式 当函数调用时,被调用函数的形参和实参为指针变量或数组时,函数间的数据传递使用的是地址传递方式。即在程序的执行过程中,系统给实参分配存储空间;在函数调用时,将实参获得的存储空间的地址传递给形参,使形参指向同一存储空间,当形参指向存储空间的值参与被调用函数的处理,也就是实参指向存储空间的值被处理。被调用函数执行完毕返回主调函数时,由于形参和实参指向同一存储空间,形参指向的存储空间的值的变化也就是实参指向存储空间的值的变化。从而实现被调用函数返回多个值给主调函数。 比如数组元素作实参时,向形参变量传递的是数组元素的值;数组名作为函数实参时,向形参传递的是数组首元素的地址。 example2.有一个一维数组score,内放10个学生成绩,求平均成绩。 #include int main() { float average(float array[10]); // 函数声明 float score[10],aver; int i; printf(“input 10 scores:\n”); for(i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |