《C语言程序设计》课件——30函数的参数传递方式.pptx
函数调用时的数据传递1.形式参数和实际参数在调用有参函数时,主调函数和被调用函数之间有数据传递关系定义函数时函数名后面的变量名称为“形式参数”(简称“形参”)主调函数中调用一个函数时,函数名后面参数称为“实际参数”(简称“实参”)pow(2,3)doublepow(doublex,doubley)
函数调用时的数据传递2.实参和形参间的数据传递在调用函数过程中,系统会把实参的值传递给被调用函数的形参或者说,形参从实参得到一个值该值在函数调用期间有效,可以参加被调函数中的运算
7.2.2参数的传递方式#includestdio.hvoidadd(intx,inty){ intresult; result=x+y; printf(%d+%d=%d\n,x,y,result);}intmain(){ add(5,10);//调用函数add return0;}【例】定义一个函数,实现两个整数的求和运算。形参实参
7.2.2参数的传递方式1、实参可以是常量、变量或表达式,但是必须有确定的值。2、实参与形参必须: 个数相等 顺序对应 类型匹配
7.2.2参数的传递方式#includestdio.hvoidchange(intx,inty){intt;printf(函数内部交换之前:x=%d,y=%d\n,x,y);t=x;x=y;y=t;printf(函数内部交换之后:x=%d,y=%d\n,x,y);}intmain(){intnum1,num2;scanf(%d%d,num1,num2);printf(交换之前:num1=%d,num2=%d\n,num1,num2);change(num1,num2);printf(交换之后:num1=%d,num2=%d\n,num1,num2);return0;}
7.2.2参数的传递方式值传递思考num1和num2的值为什么没有交换?
7.2函数调用7.2.4函数的参数类型
7.2.4数组名作函数参数除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)用数组元素作实参时,向形参变量传递的是数组元素的值用数组名作函数实参时,向形参传递的是数组首元素的地址
7.2.4数组名作函数参数例有一个一维数组score,内放10个学生成绩,求平均成绩。解题思路:用函数average求平均成绩,用数组名作为函数实参,形参也用数组名在average函数中引用各数组元素,求平均成绩并返回main函数
floataverage(floatarray[10]){inti;floataver,sum=array[0];for(i=1;i10;i++)sum=sum+array[i];aver=sum/10.0;returnaver;}定义形参数组相当于score[0]相当于score[i]
#includestdio.hintmain(){floatscore[10],aver;inti;printf(input10scores:\n);for(i=0;i10;i++)scanf(%f,score[i]);printf(\n);aver=average(score);printf(%5.2f\n,aver);return0;}