9.1.2 函数的定义
在对C语言内的函数进行定义时,必须按照其规定的格式来进行。
1.无参函数的定义
定义格式如下所示。
类型标识符 函数名() { 数据定义语句序列; 执行语句序列; }
2.有参函数的定义
定义格式如下所示。
类型标识符 函数名(形参列表) { 数据定义语句序列; 执行语句序列; }
在上述格式中各参数的具体说明如下所示。
(1)类型标识符:即数据类型说明符规定了当前函数的返回值类型,它可以是各种数据类型,也可以是指针型,如果是void,则表示没有返回值。
(2)函数名:是当前函数的名称,在同一编译单元中不能有重复的函数名。
(3)形参列表:是函数中的形式参数,用逗号来分隔若干个形式参数的声明语句,其格式如下所示。
数据类型 形式参数1, …,数据类型 形式参数n
每个形参可以是变量、数组、指针变量、指针数组等。
(4)数据定义语句序列:由当前函数中使用的变量、数组、指针变量等语句组成。
(5)执行语句序列:由当前函数中完成函数功能的程序段组成。如果当前函数有返回值,则此序列中会有返回语句return(表达式),其中表达式的值就是当前函数的返回值;如果当前函数没有返回值,则返回语句是return,也可以省略返回语句。
看下面的代码。
void Hello() { printf ("Hello, world \n"); }
上述代码定义了一个无参函数Hello,它用于输出字符串“Hello, world”。
再看下面的代码。
int max(int a, int b) { if (a>b) return a; else return b; }
上述代码的第1行说明max函数是一个整型函数,其返回的函数值是一个整数。形参a和b均为整型变量。a和b的具体值是主调函数在调用时传送过来的。在{}中的函数体内,除形参外没有使用其他变量,因此该段代码只有语句而没有声明部分。在max函数体中return语句把a(或b)的值作为函数值返回给主调函数。有返回值的函数中至少应有一个return语句。
实例9-1
提示用户输入两个整数,然后输出较大的数字
源码路径daima\9\9-1
本实例的实现文件为“hanshu.c”,具体实现代码如下。
//定义函数返回值的类型、函数名、形式参数 int max(int a, int b) { if(a>b)return a; else return b; } int main(void) { int max(int a, int b); //声明函数 int x, y, z; //定义函数体中的变量 printf("input two numbers:\n"); scanf("%d, %d", &x, &y); //输入两个数 z=max(x, y); //调用函数,比较两个数的大小 printf("maxmum=%d", z); //输出较大值 }
拓展范例及视频二维码
范例9-1-01:定义一个函数
源码路径:演练范例\9-1-01\
范例9-1-02:演示函数的调用
源码路径:演练范例\9-1-02\
在上述代码中,程序的第1行至第5行定义了max函数。进入主函数后,因为准备调用max函数,故先对max函数进行说明(程序中的第8行)。函数定义和函数说明并不是一回事,在后面还要专门讨论它们。函数说明与函数定义中的函数头部分相同,但是末尾要加分号。程序的第12行为调用max函数,并把x、y中的值传送给max的形参a、b。max函数执行的结果(a或b)将返回给变量z。最后由主函数输出z的值。
程序运行后先提示输入两个整数,输入完毕并按下Enter键后,将对输入的数字进行比较,然后输出较大的数字。执行效果如图9-1所示。
图9-1 执行效果