C编程从入门到实践
上QQ阅读APP看书,第一时间看更新

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 执行效果