1.引例
【例6.1】定义一个函数,用于求两个数中的大数。
本例程序由main()和max()两个函数构成。在本案例中,max()函数的返回值是一个整型数,带两个整型参数,它们的具体值是由main()函数在调用时传送过来的。max()函数体中的return语句把所求得的函数值返回给main()函数。为了说明方便,通常将本例中的main()函数称为主调函数,而把max()函数称为被调用函数。
【例6.2】输出一个文本信息框。
程序运行结果如下:
本例程序由fun1()、fun2()和main()三个函数构成。fun1()函数和fun2()函数既没有返回值,也没带参数,其功能就是完成一个操作过程,即输出一串文本信息。
2.函数定义的一般形式
任何函数(包括主函数main())的定义都是由函数首部和函数体两部分组成的。其一般形式如下:
其中,第一行为函数首部,用来说明函数返回值的类型、函数名及函数所需参数的名称和类型;花括号中的部分为函数体,由声明部分和执行部分组成,声明部分用来声明执行部分中用到的变量和函数,执行部分用来描述函数完成的具体操作。
根据函数是否需要参数,可将函数分为无参函数和有参函数两种。下面分别予以说明。
1)无参函数定义的一般形式
无参函数即函数没有参数,因此,函数首部的“参数定义表”可以缺省(但括号不能缺省),也可以用“void”表示。如例6.2中的fun1()和fun2()均为无参函数。
无参函数若无返回值,则其首部的类型标识符也用“void”表示。如例6.2所示。
2)有参函数定义的一般形式(www.xing528.com)
有参函数在其参数定义表中定义了所需的每一个参数的类型和名称。每一个参数单独定义,参数定义之间用逗号“,”隔开。如例6.1中的max()函数就是一个有参函数,在函数首部定义了函数返回值的类型为int,函数名为max,参数n1和n2均为int类型;函数体中完成的功能为:选出n1和n2中较大的一个数作为函数值返回。
调用有参函数时,主调函数将赋予这些参数实际的值。为了与主调函数提供的实际参数区别开,将函数首部定义的参数称为形式参数,简称形参,而将主调函数提供的实际参数简称为实参。
有参函数若无返回值,则其首部的类型标识符也用“void”表示。
3.说明
(1)除main()函数外,函数名和形参名都是由用户命名的标识符,即要求符合标识符的命名规则。
(2)函数定义不允许嵌套。在C语言中,所有函数(包括主函数main( ))都是平行的。在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。如例6.1和例6.2都体现了这一点。
(3)可以定义空函数。所谓空函数,是指既无参数,函数体又为空的函数。其一般形式为:
就是定义了一个空函数dummy()。
调用空函数时,什么操作也不做,没有任何实际作用。通常,在程序设计中,将未编写好的功能模块暂时用一个空函数占一个位置,便于将来扩充。
(4)在旧版本的C语言中,参数定义表允许放在函数首部的第2行单独指定。例如,例6.1中的max()函数可以写成以下形式:
新标准中保留了这一用法,但不提倡这样使用,请读者在程序设计和阅读其他参考书时注意。
(5)主函数main()的函数名main是系统定义的,main()函数若无参数,也可以用“void”表示main()函数无返回值,其类型也可以表示为“void”,即main()函数的首部可表示为:void main(void)。
(6)当一个C源程序由多个函数构成时,必须有唯一的main()函数,main()函数在源程序中的位置可以任意,程序的执行总是从main()函数开始,最终从main()函数结束。如例6.1中main()函数在其他函数之前,例6.2中main()函数在其他函数之后。main()函数也可以在其他函数中间。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。