一、extern 说明符
我们在阅读C、C++底层代码或是MFC代码时,会看经常到 extern 这个符号。对于多文件的项目,源码文件经常会用到其他文件声明的函数。这时,当前文件里面,需要给出外部函数的原型,并用 extern 说明该函数的定义来自其他文件,以避免重复声明。
它的作用与使用 #inlude "自定义文件名" 作用类似,但 extern 的优点是不用考虑函数在哪个自定义文件中,只要在函数原型前加上 extern 就可以使用,用法简单。
二、static 说明符
static 翻译过来是静态的、不变的意思。默认情况下,每次调用函数时,函数的内部变量都会重新初始化,不会保留上一次运行的结果。static 用于函数内部声明变量时,表示该变量只需要初始化一次,不需要在每次调用时都进行初始化。static 修饰的变量初始化时,初值只能为常量不能为变量。如果不使用 static 说明符,要达到这种效果,就需使用全局变量,造成函数结构不完整。举个例子说明static的作用:
#include<stdio.h>
void myCount(void)
{
static int count = 0; //int count被static说明
count++;
printf("函数myCount被调用次数:%d次\n", count);
return;
}
int main(void)
{
for (int i = 0; i < 5; i++)
{
printf("i=%d", i);
myCount();
}