文档视界 最新最全的文档下载
当前位置:文档视界 › C语言学案十二

C语言学案十二

C语言学案十二
C语言学案十二

C语言学案十二

教学目标:掌握函数调用的过程函数调用的运算

一、函数的调用与函数的说明

在定义了函数之后,我们就可以使用这些已经定义了的函数。通过调用函数,可以求得函数值或者完成一些流程(如打印)的功能。

1、函数的调用形式

函数调用的一般形式为:

函数名(实在参数表)说明:

(1)函数调用时,不用写返回值类型和实在参数(简称“实参”)类型。实参类型、个数、顺序必须与函数定义时的形参完全一致,一一对应。实参之间同样是用逗号(“,”)隔开。(2)实参可以是常量、变量、表达式,甚至是函数的调用(函数值)。如上一节例3定义了求面积的area函数之后,可以在main函数中调用该函数求值。只要在main函数中定义一个double类型的变量x,通过x=area(3.0,4.0);这个语句,就可以把两个常量3.0和4.0作为实参传入area函数中,实现函数调用,将返回值赋值给变量x。

(3)函数调用过程中,数据是从实参向形参的单向传递。后面会详细介绍。

(4)当函数无形参时,不能在调用时传入实参,但函数名和一对圆括

号必不可少。

(5)当函数有返回值时,函数调用可以作为一个表达式出现在任何合

法的地方;当函数无返回值(即返回值类型为void)时,不能把函数调用的结果通过赋值号

进行赋值,此时函数的调用应作为一条独立的语句。

2、调用函数的语法规则

(1)无论是调用用户编写的函数还是库函数,函数名必须完全一致。

函数名是唯一区别函数的标志。

(2)实参与形参类型匹配,个数一致,形式上一一对应。(3)一般

情况下,函数应该先定义,再调用。

(4)函数可以直接或者间接地调用自己,称为递归调用。本节我们会

学到。例5 以下函数定义:

void fun( int n, double x) { ? }

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用

语句是() A) fun(int y,double m); B) k=fun(10,12.5); C) fun(x,n); D) void fun(n,x); 例6:有以下程序

fun(int x,int y){return(x+y);} main()

{int a=1,b=2,c=3,sum;

sum=fun((a++,b++b,a+b),c++);

printf("%d\n",sum); }

执行后的输出结果是________。 A)6 B)7 C)8 D)9

例7:下面的函数调用语句中func函数的实参个数是

func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8))); A) 3 B) 4 C)5 D) 8

【注意事项】在上面大家编写的函数的基础上练习这个函数的调用。

3.函数的说明

1)函数声明的一般形式如下:

返回值类型名函数名(类型名1 参数名1,类型名2 参数名2,?);

简单地说,就是在函数的首部加上一个“;”。因为函数的声明是语句,因此后面的“;”必不

可少。例如前面求矩形面积的程序,如果把函数的定义放在主函数之后,则必须进行声明。

函数在声明时的形参名可以和定义时的形参名不同,甚至可以省略形参名,只有类型名:

返回值类型名函数名(类型名1,类型名2,?); 2)在使用函数时,

可以有两种方式:

(1)先定义后调用。此时不需要进行函数声明。

(2)先声明,后调用,最后定义,就是上面例子中采用的方式。【注意】

1)函数声明时形参的名称可以省略,但形参的类型不能省略; 2)函数声明时形参的名称可以和函数定义时的名称不一样。

例8:double area( double a, double b); /*函数声明*/ main( )

{ double x,y,z;

x=1.2; y=2.4;

z=area(x,y); /*函数调用*/ printf("area=%d",z); }

double area( double a, double b) /*函数定义*/ { double s;

s=a*b; return s; }

上例中就完全可以把函数声明写为: double area(double, double); 【注意事项】

把上面编写的函数定义,调用的程序改写为先函数声明,再调用,后定义的格式。

相关文档