73函数的说明和调用 不同的函数实现各自的功能,完成各自的任务。要将它 们组织起来,按一定顺序执行,是通过函数调用来实现 的 冷主调函数通过函数调用向被凋函数进行数据传送、控制 转移; 冷被凋函数在完成自己的任务后,又会将结果数据回传给 主调函数并交回控制校。 令各函数之间就是这样在不同时间、情况下实行有序的调 用,共同来完成程序规定的任务。 如果一个源程序包含了多个函数,而函数间又有相互调 用,那将会形成一种复杂的局面,“定义在 用 在后 原则难以实现。为此,C语言通过函数声萌 句解决这个问题
7.3 函数的说明和调用 ❖ 不同的函数实现各自的功能,完成各自的任务。要将它 们组织起来,按一定顺序执行,是通过函数调用来实现 的。 ❖ 主调函数通过函数调用向被凋函数进行数据传送、控制 转移; ❖ 被凋函数在完成自己的任务后,又会将结果数据回传给 主调函数并交回控制权。 ❖ 各函数之间就是这样在不同时间、情况下实行有序的调 用,共同来完成程序规定的任务。 ❖ 如果一个源程序包含了多个函数,而函数间又有相互调 用,那将会形成一种复杂的局面,使“定义在前、使用 在后”的原则难以实现。为此,C语言通过函数声明语 句解决这个问题
7.31函数的声明 令函数声明语句的般格式: 冷类型说明符函数名(类型说明符形参变量1,类型说明 符形参变量2 令从形式上看,函数声明就是在函数定义格式的基础上去 掉了函数体。通常,将函数声明安排在源文件的开始部 函数声明中的形参变量名可以省略 函数声明是语句,所以最后的结束符“;”不可缺少。使 用函数声明后,可以将函数的定义放在源程序的后部。 令函数说明通常出现在程序的开头,第一个函数定义之前, 也可放在主调函数的开头。有了函数说明,编译系统就 对函数每次调用进行检查,将函数说明和函数调用进 对比,以保证调用时使用的参数、类型、返回值类型都 是正确的
7.3.1 函数的声明 ❖ 函数声明语句的般格式: ❖ 类型说明符 函数名(类型说明符 形参变量1,类型说明 符 形参变量2,…); ❖ 从形式上看,函数声明就是在函数定义格式的基础上去 掉了函数体。通常,将函数声明安排在源文件的开始部 分。函数声明中的形参变量名可以省略。 ❖ 函数声明是语句,所以最后的结束符“;”不可缺少。使 用函数声明后,可以将函数的定义放在源程序的后部。 ❖ 函数说明通常出现在程序的开头,第一个函数定义之前, 也可放在主调函数的开头。有了函数说明,编译系统就 对函数每次调用进行检查,将函数说明和函数调用进行 对比,以保证调用时使用的参数、类型、返回值类型都 是正确的
732函数的调用 令一个函数写好后,若不通过函数调用,是不发挥任何作用的 函数调用是通过函数调用语句来实现的。函数调用时会去执 函数语句中的内容,函数执行完毕后,回到函数的调用处, 继续执行下面的 函数调用有三种方式: (1)函数语句 冷把一个函数作为一个语句。如“dy0。这些不要求函数返 回值,只要求函数完成一定的操作。 (2)函数表达式 函数出现在一个表达式中,这种表达式称为函数表达式,这 时要求函返回一个确定的值以参加表达式的运算。如 (3)函数参数 函数的调用作为一个函数的参数,这时要求函数返回一个 确 定的值作为另一个函数的实际参数。如 m=max(max(x,), z)
7.3.2 函数的调用 ❖ 一个函数写好后,若不通过函数调用,是不发挥任何作用的, 函数调用是通过函数调用语句来实现的。函数调用时会去执 行函数语句中的内容,函数执行完毕后,回到函数的调用处, 继续执行下面的语句。 ❖ 函数调用有三种方式: (1)函数语句 ❖ 把一个函数作为一个语句。如“dy();”。这些不要求函数返 回值,只要求函数完成一定的操作。 (2)函数表达式 ❖ 函数出现在一个表达式中,这种表达式称为函数表达式,这 时要求函返回一个确定的值以参加表达式的运算。如 “c=ftoc(f);”。 (3)函数参数 ❖ 函数的调用作为一个函数的参数,这时要求函数返回一个确 定的值作为另一个函数的实际参数。如 “m=max(max(x,y),z);
在编写程序、进行函数调用时,注意几点: C语言参数传递时,主调函数中实参向被调函数中形参 的数据传送一般采用传值方式,把各个实参值分别顺序 对应地传给形参。被调函数执行中形参值的变化不会影 响主调函数中实参变量的值。但数组名作为参数传送时 不同,它是“传址”,会对主调函数中的数组元素产生 影响。 由于采用传值方式,容参表列中参数允许为表达式及常 量。尤其值得注意的是,对实参表达式求值,C语言并 没有规定求值的顺序。采用自右至左或自左至右顺序的 系统均有。许多C( Turbo C、MSC是采用自右至左的 顺序求值的。遇此情形,为保证函数调用能得到正确的 执行结果,编写程序时应尽量采用其他可行的办去,加 以避免为好
在编写程序、进行函数调用时,注意几点: ❖ C语言参数传递时,主调函数中实参向被调函数中形参 的数据传送一般采用传值方式,把各个实参值分别顺序 对应地传给形参。被调函数执行中形参值的变化不会影 响主调函数中实参变量的值。但数组名作为参数传送时 不同,它是“传址”,会对主调函数中的数组元素产生 影响。 ❖ 由于采用传值方式,实参表列中参数允许为表达式及常 量。尤其值得注意的是,对实参表达式求值,C语言并 没有规定求值的顺序。采用自右至左或自左至右顺序的 系统均有。许多C(Turbo C、MS C)是采用自右至左的 顺序求值的。遇此情形,为保证函数调用能得到正确的 执行结果,编写程序时应尽量采用其他可行的办去,加 以避免为好
在编写程序、进行函数调用时,注意几点: 冷注意采用函数原型声明对被调函数参数类型进行说明。 如不作说明,C语言无法进行实参类型的检查与转换。 有疏忽,会造成实参个数、类型与形参个数、类型不 ,将引起参数传送出错,导致运算结果的大相径庭 令函数调用也是一种表达式,其值就是函数的返回值。 令函数调用时,被调用函数可以是库函数或用户自定义的 函数。如果是库函数,一定要在本文件的开头加上头文
在编写程序、进行函数调用时,注意几点: ❖ 注意采用函数原型声明对被调函数参数类型进行说明。 如不作说明,C语言无法进行实参类型的检查与转换。 稍有疏忽,会造成实参个数、类型与形参个数、类型不 符,将引起参数传送出错,导致运算结果的大相径庭。 ❖ 函数调用也是一种表达式,其值就是函数的返回值。 ❖ 函数调用时,被调用函数可以是库函数或用户自定义的 函数。如果是库函数,一定要在本文件的开头加上头文 件