C语言学习笔记1:static

1 综述

2 static在函数中的应用

函数分为内部函数和外部函数,当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。

2.1 内部函数(静态函数)

如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。定义内部函数用关键字static:

static 函数类型 函数名(函数参数表){……}
这里的static不是指存储方式而是指函数作用域仅局限于本文件(.c文件)。

内部函数优点:不同的人编写不同的函数不用担心自己定义的函数会与其他文件中的函数同名,因为同名也没有关系(这在多人合作的项目中具有非常重大的意义)。
2.2 外部函数

如果在一个源文件中定义的函数,可以被文件外的函数调用,这种函数成为外部函数,外部函数不需要加关键字static,或者我们可以使用关键字extern(表示是外部函数):

[extern] 函数类型 函数名(函数参数表){……}
外部函数虽然可以被外部文件使用,但是使用之前需要进行声明,例如:

void temp(void)
{
    extern void input(…),process(…),output(…);
    input(…);
    process(…);
    output(…);
}

但是实际上,我们通常是不加static来定义函数(也不家extern,默认就是外部的),然后我们在.h文件中进行声明,通过包含头文件的方式来使用。
3 static在变量中的应用

我们在函数中常常遇到一个情况,希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值)。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。用静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可以先后为多个变量使用,节约内存),而且降低了程序的可读性,因此若非必要,不要多用静态局部变量。

你可能感兴趣的:(C语言学习笔记1:static)