4.15、内部函数和外部函数
来源:互联网 发布:醉玲珑小说网络点击量 编辑:程序博客网 时间:2024/06/05 02:06
函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数只能被本文件调用,而不能被其他文件调用。根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。
static 类型标识符 函数名(形参表);
如
static int fun(int a, int b);
内部函数又称静态(static)函数。使用内部函数,可以使函数只局限于所在文件。如果在不同的文件中有同名的内部函数,互不干扰。通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都冠以static使之局部化,其他文件不能引用。
extern int fun (int a, int b);
这样,函数fun就可以为其他文件调用。如果在定义函数时省略extern,则默认为外部函数。本教程前面所用的函数都是外部函数。
在需要调用此函数的文件中,用extern声明所用的函数是外部函数。
【例4.15】输入两个整数,要求输出其中的大者,用外部函数实现。
运行情况如下:
7 -34↙
7
通过此例可知:使用extern声明就能够在一个文件中调用其他文件中定义的函数,或者说把该函数的作用域扩展到本文件。extern声明的形式就是在函数原型基础上加关键字extern。由于函数在本质上是外部的,在程序中经常要调用其他文件中的外部函数,为方便编程,C++允许在声明函数时省写extern。例4.15程序main函数中的函数声明可写成:
int max(int, int);
这就是我们多次用过的函数原型。由此可以进一步理解函数原型的作用。用函数原型能够把函数的作用域扩展到定义该函数的文件之外(不必使用extern)。只要在使用该函数的每一个文件中包含该函数的函数原型即可。函数原型通知编译系统:该函数在本文件中稍后定义,或在另一文件中定义。
利用函数原型扩展函数作用域最常见的例子是#include命令的应用。在#include命令所指定的头文件中包含有调用库函数时所需的信息。例如,在程序中需要调用sin函数,但三角函数并不是由用户在本文件中定义的,而是存放在数学函数库中的。按以上的介绍,必须在本文件中写出sin函数的原型,否则无法调用sin函数。sin函数的原型是:
double sin(double x);
本来应该由程序设计者在调用库函数时先从手册中查出所用的库函数的原型,并在程序中一一写出来,但这显然是麻烦而困难的。为减少程序设计者的困难,在头文件cmath中包括了所有数学函数的原型和其他有关信息,用户只需用以下#include命令:
#include <cmath>
即可。这时,在该文件中就能合法地调用各数学库函数了。
内部函数
如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。函数首部的一般格式为:static 类型标识符 函数名(形参表);
如
static int fun(int a, int b);
内部函数又称静态(static)函数。使用内部函数,可以使函数只局限于所在文件。如果在不同的文件中有同名的内部函数,互不干扰。通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都冠以static使之局部化,其他文件不能引用。
外部函数
在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。如函数首部可以写为:extern int fun (int a, int b);
这样,函数fun就可以为其他文件调用。如果在定义函数时省略extern,则默认为外部函数。本教程前面所用的函数都是外部函数。
在需要调用此函数的文件中,用extern声明所用的函数是外部函数。
【例4.15】输入两个整数,要求输出其中的大者,用外部函数实现。
/*******file1.cpp(文件1)*******/#include <iostream>using namespace std;int main( ){ extern int max(int,int); //声明在本函数中将要调用在其他文件中定义的max函数 int a,b; cin>>a>>b; cout<<max(a,b)<<endl; return 0;}/*******file2.cpp(文件2)*******/int max(int x,int y){ int z; z=x>y?x:y; return z;}
运行情况如下:
7 -34↙
7
通过此例可知:使用extern声明就能够在一个文件中调用其他文件中定义的函数,或者说把该函数的作用域扩展到本文件。extern声明的形式就是在函数原型基础上加关键字extern。由于函数在本质上是外部的,在程序中经常要调用其他文件中的外部函数,为方便编程,C++允许在声明函数时省写extern。例4.15程序main函数中的函数声明可写成:
int max(int, int);
这就是我们多次用过的函数原型。由此可以进一步理解函数原型的作用。用函数原型能够把函数的作用域扩展到定义该函数的文件之外(不必使用extern)。只要在使用该函数的每一个文件中包含该函数的函数原型即可。函数原型通知编译系统:该函数在本文件中稍后定义,或在另一文件中定义。
利用函数原型扩展函数作用域最常见的例子是#include命令的应用。在#include命令所指定的头文件中包含有调用库函数时所需的信息。例如,在程序中需要调用sin函数,但三角函数并不是由用户在本文件中定义的,而是存放在数学函数库中的。按以上的介绍,必须在本文件中写出sin函数的原型,否则无法调用sin函数。sin函数的原型是:
double sin(double x);
本来应该由程序设计者在调用库函数时先从手册中查出所用的库函数的原型,并在程序中一一写出来,但这显然是麻烦而困难的。为减少程序设计者的困难,在头文件cmath中包括了所有数学函数的原型和其他有关信息,用户只需用以下#include命令:
#include <cmath>
即可。这时,在该文件中就能合法地调用各数学库函数了。
0 0
- 4.15、内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 【C语言】外部函数和内部函数
- C的内部函数和外部函数
- C的内部函数和外部函数
- C++内部函数和外部函数
- 内部函数外部函数
- 33_内部和外部函数
- C语言的内部函数和外部函数用法
- C语言 内部函数和外部函数问题
- staitc用于函数内部和函数外部的不同
- 黑马程序员--预处理指令、内部和外部函数、递归思想
- 函数参数 - 内部参数和外部参数的概念
- 5.3 Swift函数的内部和外部参数
- 关于七牛私有音视频资源播放显示401,但是token生成正确的解决办法。
- CSS常用代码使用技巧大全
- 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)
- Log4j 日志配置示例详解
- 说说IT界加班文化
- 4.15、内部函数和外部函数
- 请各位帮忙解决----Android短信批量速度的优化问题
- VS2012添加单元测试
- 【J2SE快速进阶】——多线程之synchronized
- easy-layout
- HTML中ID与Name的命名规范
- sax解析并封装XML到bean
- java中类的构造方法与默认构造方法的关系
- Hi3516A linux kernel 编译步骤详细说明