C语言的库函数虽然种类丰富,但还不能满足各方面实际的编程需要。在程序开发中,常将一些常用的功能模块编写成函数,以减少重复编写程序段的工作量。
函数的定义是指对函数功能的确立,包括指定函数名、函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
1.无参函数
无参函数的一般形式为:
类型标识符函数名()
格式说明:
(1)其中类型标识符和函数名称为函数头。类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。
(2)函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可少。
(3){}中的内容称为函数体。在函数体中声明部分,是对函数体内部所用到的变量的类型说明。
(4)在很多情况下都不要求无参函数有返回值,此时函数类型符可以写为void。
【例5-2】无参函数调用实例。
程序代码:
【程序说明】
Hello函数是一个无参函数,当被其他函数调用时,输出How do you do!字符串。
2.有参函数
有参函数的一般形式为:
格式说明:
(1)类型标识符:表示函数的类型,用于指定函数带回来的值的类型,可以是任何有效的类型。函数类型可以省略,此时系统默认为int型,这时函数返回一个整数值。当函数无返回值时函数类型一般应写成void,称为无类型或空类型,已明确告诉C编译系统该函数无返回值。
(2)函数名:是用户定义的标识符,它的命名规则与变量名的命名规则相同。在一个程序中,不同的函数其名字也要不同。为了增加程序的可读性,一般取有助于记忆的名字作函数名,函数名不能省略。
(3)参数表:它是一个用逗号分隔的变量说明表,参数表中的参数称为“形式参数”,简称“形参”,形参用于主调函数和被调用函数之间进行数据传递,即当函数被调用时,形参接收实参传过来的值。
注意
当有多个形式参数的时候(如void fun(int x,int y)),不能省略书写(即不能写成void fun(int x,y))。
参数表的定义形式如下:(www.xing528.com)
(4)函数体:是由左、右花括号括起来的部分,它由声明部分和语句部分组成。其中声明部分主要用于定义该函数内所使用的变量,及对在该函数内将要调用的函数进行说明;语句部分,它是实现函数功能的核心部分,由C语言的基本语句组成。
【例5-3】输入三个正整数a、b、c,求最大值,要求定义一个计算最大值得函数max(a,b)。返回a、b的值。
程序分析
三个整数求最大值,需要两两比较。对于功能重复的代码,可以提取过来单独定义一个计算两个整数最大值的函数,由于在定义时求解的是两个整数的最大值,故参数列表应该为(int a,int b),函数最后得到一个最大值,故函数的返回类型应该是一个整数类型int,故定义函数int max(int a,int b),在main()函数中调用两次max函数来求解最大值。其求解步骤如下:
步骤一,定义变量a、b、c、maxvalue;
步骤二,输入a、b、c的值;
步骤三,先比较a、b得值,并把较大值赋值给maxvalue保存;
步骤四,再比较maxvalue和c的值,把二者的较大值赋值给maxvalue;
步骤五,输出maxvalue。
程序代码:
【程序说明】
程序从主函数开始执行,执行到“maxvalue=max(a,b);”语句时,跳转到函数“int max(int a,int b)”,并把实参a和b的值赋值给形参a和b,这里实参和形参名称相同,但是它们处在不同的内存区,可以当作是两个完全不同的变量。运算完后通过“return;”语句把值带回到主函数,调用它的语句处并赋值给maxvalue变量。如果函数返回类型为void,说明函数不需要返回任何数据,这类函数通常用于功能操作。如例5-2中函数:
Hello函数没有返回值,执行到函数最后的花括号时,控制自动返回到主调函数。在定义函数时,需要注意以下几点:
(1)定义函数式在函数头的右括号后面加上一个分号,将会出现编译语法错误。
(2)形参是函数的局部变量,将形参再次定义为局部变量是错误的,其作用范围只是在函数体内部是有效的。
(3)用有意义的名字为函数命名,可以提高程序的可读性,函数名若用多个单词拼写,则最好每个单词的首字母大写。
(4)一个函数中不允许定义另外一个函数。
3.空函数
在程序设计中有时会用到空函数,所谓空函数是指它的函数体什么内容也没有,它的一般形式为:
格式说明:
调用此函数时,什么工作也不做,没有任何实际作用。在主调函数中写上dummy();表明这里要调用一个函数,而现在这个函数没有起作用,等以后扩充函数功能时再补上。这样做,程序的结构清楚,可读性好,以后扩充新功能方便,对程序结构影响不大。空函数在程序设计中是很有用的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。