C函数函数

📅 2026/7/15 4:09:11 👁️ 阅读次数 📝 编程学习
C函数函数

内部静态函数和外部函数

函数本质上是全局的,因为定义一个函数的目的就是要被另外的函数调用。如果不加
声明的话,一个文件中的函数既可以被本文件中其他函数调用,也可以被其他文件中的函数
调用。
但是,也可以指定某些函数不能被其他文件调用。根据函数能否被其他源文件调用,
将函数区分为内部函数和外部函数。

内部静态函数

如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,
在函数名和函数类型的前面加static,即:
static 类型名 函数名(形参表);
例如static int fun(int a,int b),fun是一个内部函数,只能在本文件中使用,不能被其他文件调用。
内部函数又称静态函数,因为它是用static声明的。使用内部函数,可以使函数的作用
域只局限于所在当前文件中使用。这样,在不同的其他文件中即使有同名的内部函数,也互不干扰,不必担心所用内部函数是否会与其他文件模块中的函数同名。
通常把只能在本文件中使用的函数和外部变量放在文件的开头,前面都冠以static使之局部化,变成内部静态函数外部静态全局变量其他文件不能引用。这就提高了程序的可靠性。
file.c
static int a;
static int b;
static int fun(int a,int b);

外部函数

如果在定义函数时,在函数首部的最左端加关键字extern(可省略),则此函数是外部函数,可供其他文件调用。
在当前本文件中,定义函数时可省略extern,则默认为外部函数。
extern int fun(int a, int b)
在需要调用此函数的其他文件中,需要对此函数作声明(不要忘记,即使在本文件中调
用一个函数,也要用函数原型进行声明)。在对此函数作声明时,要加关键字extern,表示该
函数“是在其他文件中定义的外部函数”。
filel.c(1)
#include <stdio.h> int main() { //以下3行声明了在本函数中调用的已在其他文件中定义的3个函数 extern void enter_string(char str[]); //对其他文件的函数的声明 extern void delete_string(char str[],char ch); //对其他文件的函数的声明 extern void print_string(char str[]); //对其他文件的函数的声明 //定义局部变量 c str char c,str[80]; enter_string(str);//调用其他文件中定义的enter_string函数,并传入参数str delete_string(str,c);//调用其他文件中定义的delete_string函数,并传入参数str c print_string(str);//调用其他文件中定义的print_string函数,并传入参数str return 0; }
file2.e(2)
void enter_string(char str[80]) //定义外部函数enter_string { gets(str); }
file3.e(3)
void delete_string(char str[],char ch) //定义外部函数delete_string { }
file4.c(文件4)
void print_string(char str[]) //定义外部函数print_string { printf(”%s\n”,str); }

第三方库里的外部函数的引用

在当前文件中,我要使用第三方库里的某一个外部函数的引用, 不需要 额外写extern 某一个函数 这么费劲。 只需要 引入#include 头文件即可 因为头文件里包含了 该外部函数的原形函数的引用。
例如: 使用第三方库里sin函数 只需要在当前文件里 #includde <math.h >即可。