1 函数的概念
1.1为什么要引入函数
在C语言中一段功能代码可能会用到很多次,如果每次都写这样一段重复的代码,不但费时费力、容易出错,而且交给别人时也很麻烦。所以为了避免使代码变得庞杂、逻辑混乱、程序冗余,C语言提供了一个功能,允许我们将常用的代码以固定的格式封装(包装)成一个独立的模块,只要知道这个模块的名字就可以重复使用它,这个模块就叫做函数(Function)。
1.2什么是函数
函数的本质是一段可以复用的完成特定功能的代码模块。可以给函数传递参数,也可以得到返回值。函数被提前编写好,放到指定的文件中,使用时直接在需要的位置,直接调用即可。
2.函数的定义和声明
2.1函数的定义
与变量类似,函数必须要先定义再使用。一般形式如下:
<数据类型> <函数名称> (<形式参数说明>)
{
函数体;
return (<表达式>);
}
- 函数名:函数的标识符,使用者可以根据函数名调用该函数。函数名应符合C语言的标识符命名规范,且不得重名,不得与系统函数(如printf()等库函数或main()函数)重名。命名应做到“见文知意”而避免起简单的函数名。
- 数据类型:函数返回值的类型,函数的返回值可理解为函数的计算结果。函数可以没有返回值,但如果有返回值,返回值类型需要与函数的数据类型匹配。若该函数不需要返回值,则应将函数类型定义为void(空类型)。
- 形式参数说明:函数的形式参数列表,简称形参。形参可以是任意类型的变量,各参数之间用逗号分隔。在进行函数调用时,调用函数将赋予这些形参实际的值。如果不需要传递参数,可以省略形参。
- 函数体:实现函数功能的代码。
- 函数返回值:return (<表达式>);语句中表达式的值即函数的返回值,要求必须与函数的数据类型保持一致。如果数据类型为void 表示无返回值,可以省略return 表达式也可以写成”return ;”。
2.2函数的声明
C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明。
所谓声明(Declaration),就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上。
函数声明的格式非常简单,相当于去掉函数定义中的函数体,并在最后加上分号";"如下形式:
<数据类型> <函数名称> (参数类型1 , 参数类型 2,……);
或 <数据类型> <函数名称> (参数类型1 参数名称1, 参数类型 2 参数名称2,……);