内部函数和外部函数
来源:互联网 发布:skypixel软件 编辑:程序博客网 时间:2024/05/20 18:18
函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数不能被其他文件调用根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。
(1)内部函数
如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。即static 类型标识符函数名(形参表)如:
static int func(int a,int b);内部函数又称静态函数。使用内部函数,可以使函数只局限于所在文件,如果在不同的文件中有同名的内部函数,互不干扰。这样不同的人可以分别编写不同的函数,而不必担心所用函数是否会与其他文件中函数同名,通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都static使之局部化,其他文件不能引用。
实例:
file1.cpp:
static int function01(int a) //static.内部函数,不能被其他文件所引用{return a+1;}
file2.cpp
#include <iostream>using namespace std;extern int function01(int a);int main(){int a=9;cout<<function01(a)<<endl; //not oksystem("pause");return 0;}
编译执行不正确,原因在与file1.cpp中的function01函数是static的,也就是内部函数,不能被所在文件之外的方法调用。
(2)外部函数
在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。如函数首部可以写为:
extern int function01(int a);
这样,函数fun就可以为其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。在需要调用此函数的文件中,用extern声明所用的函数是外部函数。
实例:
add.cpp:
//int add(int a,int b) 省略extern效果一样extern int add(int a,int b){return a+b;}
sub.cpp:
//int sub(int a,int b) 省略extern效果一样extern int sub(int a,int b) {return a-b;}
mul.cpp:
//int mul(int a,int b) 省略extern效果一样extern int mul(int a,int b){return a*b;}
divint.cpp:
#include <cassert>//int div(int a,int b) 省略extern效果一样extern int divint(int a,int b){assert(b!=0);return a/b;}
main.cpp:
#include <iostream>using namespace std;extern int add(int a,int b);extern int sub(int a,int b);extern int mul(int a,int b);extern int divint(int a,int b);int main(){int a,b;cin>>a>>b;cout<<add(a,b)<<endl<<sub(a,b)<<endl<<mul(a,b)<<endl<<divint(a,b)<<endl;system("pause");return 0;}
执行正确。
0 0
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 4.15、内部函数和外部函数
- 【C语言】外部函数和内部函数
- C的内部函数和外部函数
- C的内部函数和外部函数
- C++内部函数和外部函数
- 内部函数外部函数
- 33_内部和外部函数
- C语言的内部函数和外部函数用法
- C语言 内部函数和外部函数问题
- staitc用于函数内部和函数外部的不同
- 黑马程序员--预处理指令、内部和外部函数、递归思想
- 函数参数 - 内部参数和外部参数的概念
- 5.3 Swift函数的内部和外部参数
- 【iOS XMPP】使用XMPPFramewok(三):好友状态
- 对比现在各种主流语言的优劣
- 设计模式之反思(一)
- 通过loosejar清理应用中冗余的jar包
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 内部函数和外部函数
- 【iOS XMPP】使用XMPPFramewok(五):好友列表
- LeetCode | First Missing Positive(第一个缺失的正整数)
- QT学习7:程序打包发布
- leetcode 刷题之路 75 Plus One
- 黑马程序员_JAVA基础_IO流(一)
- fedora下字体安装
- 编程珠玑中一些算法
- linux下删除文件以及文件夹命令