当前位置:文档之家› c语言程序设计函数调用共50页文档

c语言程序设计函数调用共50页文档


义的标准输入输出函数。

②数学库函数:#include ″math.h″———使用系统定义
的标准数学运算函数。
(3)如果使用用户自己定义的函数,而且该函数与调用它 的函数(即主调函数)在同一个文件中,一般还应该在主调函 数中对被调用函数的返回值的类型作说明。

这种类型说明的一般形式为:

类型标识符 被调函数函数名();
由主调函数的实际参数把参数值传递给被调用函数中的形式参
数x和y。
7.2 函数参数和返回值
7.2.1 函数参数
Hale Waihona Puke 在调用函数时,大多数情况下,主调函数和被调函数之间
有数据传递关系。在定义函数时,函数名后面括号中变量名称
为“形式参数”,简称 “形参”。在调用函数时,函数名后面
括号中的表达式称为 “实际参数”,简称 “实参”。

对被调用函数的说明,在以下几种情况下可以省略:
(1)如果函数的值(函数的返回值)是整型或字符型,可
以不进行说明,系统对它们自动按整型说明。
(2)如果被调用函数的定义出现在主调函数之前,可以不 进行说明,因为编译系统已经先知道了已定义的函数类型,会 自动处理。
(3)如果在所有函数定义之前,对函数类型进行了说明, 则在各个主调函数中不再进行说明。
数使用,被调用函数中的数据也可以带回来供主调函数使用。
7.1.2 函数的定义

1.无参函数的定义

类型标识符 函数名() 类型标识符 函数名(形式参数说明)

{说明部分

语句}
或 {说明部分 语句}

说明:

用 “类型标识符” 指定函数值的类型,即函数带回来的
值的类型。C语言默认返回值的类型是整型。

2.有参函数的定义

类型标识符 函数名(形式参数表列)

形式参数说明

{说明部分

语句}
例如:

int max(x,y)

int x,y;
/* 形式参数说明 */



int z;
/* 函数体中的说明部分 */

z=x>y?x:y;

return(z); /* z为函数的返回值 */



这是一个求x和y二者中大者的函数,x 和 y为形式参数,
(1)在定义函数中指定的形参变量,在未出现函数调用时,它 们并不占内存中的存储单元。只有在发生函数调用时函数 max 中的形参才被分配内存单元。调用结束后,形参所占用的内存 单元也同时被释放。
(2)实参可以是常量、变量或表达式,如:max(3,a+b);但 要求它们有确定的值。在调用时将实参的值赋给形参变量。
标准函数是系统提供的已设计好的函数,可以直接调用,用 户自己定义的函数是用户自己编写的用来解决具体问题的函数.
(1)C程序的执行从 main函数开始,调用其他函数后流程 回到main函数。
(2)所有函数都是平行的,即在定义函数时,是互相独立 的,一个函数并不从属于另一函数,即函数不能嵌套定义,但 可以互相调用,但不能调用main函数。
(3)从用户使用的角度看,函数分两种:

①标准函数,即库函数。这是由系统提供的,用户不用自
己定义。

②用户自己定义的函数,以解决用户的专门问题。
(4)从函数的形式看,函数分两类:

①无参函数: 主调函数并不将数据传送给被调用函数。

②有参函数: 在调用函数时,在主调函数和被调用函数之
间有参数传递,也就是说,主调函数可以将数据传给被调用函

7.3.2 对被调用函数的说明

在一个函数中调用另一个被调函数,需要具备的条件:
(1)首先被调函数必须是已经存在的函数(库函数或用户 自定义函数)。
(2)如果使用库函数,一般还应在本文件开头用#include 命令将调用有关库函数时所需用的信息包含到本文件中来。

①输入输出库函数: #include <stdio.h>——使用系统定
(3)在定义的函数中,必须指定形参的类型。
(4)实参与形参的类型应一致。只有字符型与整型可以互 相通用。
(5)实参变量对形参变量的数据传递是 “值传递”,即单 向传递,只由实参传给形参,而不能由形参传回来给实参。在 内存中,实参单元与形参单元是不同的单元。
7.2.2 函数的返回值

第7章 函数与变量
7.1 函数概述 7.2 函数参数和返回值 7.3 函数的调用 7.4 数组的作为函数参数 7.5 变量的定义位置和作用域 7.6 动态存储方式与静态存储方式 7.7 函数的存储分类 7.8 程序设计举例 7.9 程序设计题目

7.1 函数概述
C语言函数分为两种: 标准函数和用户自定义的函数。

int x;
{int y,z;



z=f(y);



return(2*z);


7.4 数组的作为函数参数
7.4.1 数组元素做函数实参

由于实参可以是表达式,数组元素又可以是表达式的组成
部分,因此数组元素可以作为函数的实参,与变量作实参一样,
是单向传递,即 “值传送”。只能将数组元素的值传递给被调
格式: 函数名(实参表列);

函数调用语句的执行过程:首先计算每个实参表达式的值,
并把此值存入所对应的形参单元中,然后把执行流程转入函数
体中,执行函数体中的语句,函数体执行完之后,将返回到调
用此函数的程序中的下一条语句,继续去执行。

当执行到函数体的右花括号或return语句时,表示函数体
执行完成,这时将返回到主调程序中。
函数的返回值是由return语句传递的。

格式: return(表达式);

或 return表达式;

功能: 用return语句从函数退出,返回到调用它的程序中.
该语句有两重作用:
(1)从函数中退出,返回到调用它的程序中。 (2)向调用程序返回一个值。

7.3 函数的调用
7.3.1 函数调用的一般形式

7.3.4 函数的嵌套调用
C 语言的函数定义都是互相平行、独立的,可以嵌套调用函数
即在调用一个函数的过程中,又调用另一个函数.
7.3.5 函数的递归调用

在调用一个函数的过程中又出现直接或间接地调用该函数本
身,称为函数的递归调用。C 语言的特点之一就在于允许函数递
归调用。例如:

int f(x)
函数的形参,不能带回变化的值。这种方式适合部分数组元素
传递和元素较小的数组传递。


相关主题