7.3.2 函数调用时的数据传递
例7.2 输入两个整数,要求输出其中值较大者。要求用函数来找到大数。 解题思路:
(1)函数名应是见名知意,今定名为max
(2) 由于给定的两个数是整数,返回主调函数的值(即较大数)应该是整型
(3)max函数应当有两个参数,以便从主函数接收两个整数,因此参数的类型应当是整型 7.3.2 函数调用时的数据传递 先编写max函数: int max(int x,int y) {
int z;
z=x>y?x:y; return(z); }
7.3.2 函数调用时的数据传递 在max函数上面,再编写主函数 #include
{ int max(int x,int y); int a,b,c; printf(“two integer numbers: \ scanf(“%d,%d”,&a,&b); c=max(a,b);
printf(“max is %d\\n”,c); }
实参可以是常量、变量或表达式 7.3.2 函数调用时的数据传递 c=max(a,b); (main函数)
int max(int x, int y) (max函数) {
int z;
z=x>y?x:y; return(z); }
7.3.3 函数调用的过程
在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。在发生函数调用时,函数max的形参被临时分配内存单元。 2 a 3 b x y 2
3 实参 形参
7.3.3 函数调用的过程
调用结束,形参单元被释放
实参单元仍保留并维持原值,没有改变
如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值 2 a 3 b x y 2 3 实参 形参
7.3.4. 函数的返回值
通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数值(函数的返回值) 函数的返回值是通过函数中的return语句获得的。
一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个就起作用 return语句后面的括号可以不要 7.3.4. 函数的返回值
通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数值(函数的返回值) (2) 函数值的类型。应当在定义函数时指定函数值的类型 7.3.4. 函数的返回值
通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数值(函数的返回值) (3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致 如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准 7.3.4. 函数的返回值
例7.3将例7.2稍作改动,将在max函数中定义的变量z改为float型。函数返回值的类型与指定的函数类型不同,分析其处理方法。
解题思路:如果函数返回值的类型与指定的函数类型不同,按照赋值规则处理。 #include
{ int max(float x,float y); float a,b; int c;
scanf(\ c=max(a,b);
printf(\ return 0; }
int max(float x,float y)
{ float z;
z=x>y?x:y; return( z ) ; } 1.5 2.6 2.6 2
变为2
7.4对被调用函数的声明和函数原型
在一个函数中调用另一个函数需要具备如下条件:
(1) 被调用函数必须是已经定义的函数(是库函数或用户自己定义的函数) (2) 如果使用库函数,应该在本文件开头加相应的#include指令
(3) 如果使用自己定义的函数,而该函数的位置在调用它的函数后面,应该声明 7.4对被调用函数的声明和函数原型
例7.4 输入两个实数,用一个函数求出它们之和。
解题思路:用add函数实现。首先要定义add函数,它为float型,它应有两个参数,也应为float型。特别要注意的是:要对add函数进行声明。 7.4对被调用函数的声明和函数原型
分别编写add函数和main函数,它们组成一个源程序文件 main函数的位置在add函数之前 在main函数中对add函数进行声明 #include
{ float add(float x, float y); float a,b,c;
printf(\
scanf(\ c=add(a,b); printf(\ return 0; }
float add(float x,float y)
{ float z; z=x+y;
return(z); }
求两个实数之和,函数值也是实型 对add函数声明 #include
{ float add(float x, float y); float a,b,c;
printf(\
scanf(\
c=add(a,b); printf(\ return 0; }
float add(float x,float y)
{ float z; z=x+y;
return(z); }
只差一个分号 #include
{ float add(float x, float y); float a,b,c;
printf(\
scanf(\ c=add(a,b); printf(\ return 0; }
float add(float x,float y)
{ float z; z=x+y;
return(z); }
定义add函数 调用add函数
函数原型的一般形式有两种: 如 float add(float x, float y); float add(float, float);
原型说明可以放在文件的开头,这时所有函数都可以使用此函数 7.5 函数的嵌套调用
C语言的函数定义是互相平行、独立的 即函数不能嵌套定义 但可以嵌套调用函数
即调用一个函数的过程中,又可以调用另一个函数 7.5 函数的嵌套调用 main函数 ①
调用a函数 ⑨ 结束 a函数 ③
调用b函数 ⑦ ② ⑧ b函数 ⑤ ④ ⑥
7.5 函数的嵌套调用
例7.5 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。 解题思路:
main中调用max4函数,找4个数中最大者 max4中再调用max2,找两个数中的大者
max4中多次调用max2,可找4个数中的大者,然后把它作为函数值返回main函数 main函数中输出结果 #include
{ int max4(int a,int b,int c,int d); int a,b,c,d,max;
printf(“4 interger numbers:\
scanf(\ max=max4(a,b,c,d);
printf(\ return 0; }
主函数
对max4 函数声明 #include
{ int max4(int a,int b,int c,int d); int a,b,c,d,max;
printf(“4 interger numbers:\
scanf(\ max=max4(a,b,c,d);
printf(\ return 0; }
主函数
输入4个整数 #include
{ int max4(int a,int b,int c,int d); int a,b,c,d,max;
printf(“4 interger numbers:\
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第7章 用函数实现模块化程序设计 ppt.Convertor(2)在线全文阅读。
相关推荐: