内部函数和外部函数 函数一旦定义后就可被其它
函数调用。 但当一个源程序由多个源文件组成时, 在一个源文件中定义的
函数能否被其它源文件中的
函数调用呢?为此,C语言又把
函数分为两类:
一、内部
函数 如果在一个源文件中定义的
函数只能被本文件中的
函数调用,而不能被同一源程序其它文件中的
函数调用, 这种
函数称为内部函
数。定义内部
函数的一般形式是: static 类型说明符
函数名(形参表) 例如:
static int f(int a,int b) 内部
函数也称为静态
函数。但此处静态static 的含义已不是指存储方式,而是指对
函数的调用范围只局限于本文件。 因此在不同的源文件中定义同名的静态
函数不会引起混淆。
二、外部
函数 外部
函数在整个源程序中都有效,其定义的一般形式为: extern 类型说明符
函数名(形参表) 例如:
extern int f(int a,int b)如在
函数定义中没有说明extern或static则隐含为extern。在一个源文件的
函数中调用其它源文件中定义的外部
函数时,应 用extern说明被调
函数为外部
函数。例如:
F1.C (源文件一)
main()
{
extern int f1(int i); /*外部函数说明,表示f1函
数在其它源文件中*/
……
}
F2.C (源文件二)
extern int f1(int i); /*外部函数定义*/
{
……
}
本章小结1.
函数的分类
(1)库
函数:由C系统提供的
函数;
(2)用户定义
函数:由用户自己定义的
函数;
(3)有返回值的
函数向调用者返回
函数值,应说明
函数类型( 即返回值的类型 );
(4)无返回值的
函数:不返回
函数值,说明为空(void)类型;
(5)有参
函数:主调
函数向被调
函数传送数据;
(6)无参
函数:主调
函数与被调
函数间无数据传送;
(7)内部
函数:只能在本源文件中使用的
函数;
(8)外部
函数:可在整个源程序中使用的
函数。
2.
函数定义的一般形式
[extern/static] 类型说明符
函数名([形参表]) 方括号内为可选项。
3.
函数说明的一般形式 [extern] 类型说明符
函数名([形参表]);
4.
函数调用的一般形式
函数名([实参表])
5.
函数的参数分为形参和实参两种,形参出现在
函数定义中,实参出现在
函数调用中,发生
函数调用时,将把实参的值传送给形参。
6.
函数的值是指
函数的返回值,它是在
函数中由return语句返回的。
7. 数组名作为
函数参数时不进行值传送而进行地址传送。形参和实参实际上为同一数组的两个名称。因此形参数组的值发生变化,实参数组的值当然也变化。
8. C语言中,允许
函数的嵌套调用和
函数的递归调用。
9. 可从三个方面对变量分类,即变量的数据类型,变量作用域和变量的存储类型。在第二章中主要介绍变量的数据类型,本章中介绍了变量的作用域和变量的存储类型。
10.变量的作用域是指变量在程序中的有效范围, 分为局部变量和全局变量。
11.变量的存储类型是指变量在内存中的存储方式,分为静态存储和动态存储,表示了变量的生存期。
12.变量分类特性表存储方式存储类型说明符何处定义生存期作用域赋值前的值可赋初值类型动态存储自动变量 auto 寄存器变量 register
函数或复合语句内被调用时在定义它的
函数或复合语句内不定基本类型int或char外部变量extern
函数之外整个源程序整个源程序静态局部变量static
函数或复合语句内静态全局变量static
函数之外整个源程序在定义它的
函数或复合语句内在定义它的源文件内0任何类型
posted on 2007-05-01 02:10
悲惨的狼 阅读(79)
评论(0) 编辑 收藏 引用 所属分类:
C语言第五章