静态变量属于静态存储方式,但反之不一定成立。
静态局部变量特点:
1,静态局部变量在函数内定义,但不像自动变量那样调用时就存在,退出函数就消失。
2,静态局部变量只能在定义该变量的的函数内使用。
3,允许对构造类静态局部量赋初值,若没有赋初值,系统自动赋值0.
4,对基本类型的静态局部变量若在说明时没赋以初值,则系统自动赋以0值。
静态全局变量:
全局变量(外部变量)与静态全局变量都是静态存储方式,其区别是非静态全局变量的作用域为整个源程序,当一个源程序有多个源文件时,其在各个源文件都是有效的。而静态全局变量则限制了其作用域。
#include <stdio.h>
int fac(int n)
{
static int f=1;
f=f*n;
return(f);
}
int main ()
{
int i;
for(i=1;i<=5;i++)
printf("%d!=%d\n",fac(i));
return(0);
}
当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。
折叠内部函数
(又称静态函数)
如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。
定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:
static 函数类型 函数名(函数参数表)
关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。
使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。