Static 作用

来源:互联网 发布:速卖通标题优化工具 编辑:程序博客网 时间:2024/05/16 10:53

本文摘选自陈正冲老师的《C语言深度解剖》第一版

在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。

1、    修饰变量

  修饰的变量又分为局部变量和全局变量,但都存储在内存的静态区。

1)静态全局变量,作用域仅限于变量定义的文件中,其他文件使用extern声明也无法调用。即,作用域为从定义开始到本文件结束,在定义处之前的函数也不能使用它。若没有初始化,默认为0。

2)静态局部变量,在函数体内定义,仅在本函数内起作用。但由于静态变量在内存的静态区,所以函数运行结束,静态变量值不会被销毁,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值。

Static int j;

void fun(void)

{

Static int i = 0;

print(“i = %d”,i);

i++;

}

Void fun2(void)

{

j = 0;

print(“j = %d”,j);

j++;

}

int main()

{

for(k=0;k<3;k++)

{

fun();

fun1();

}

return 0;

}

i =0

j =0

i =1

j =1

i =2

j =2


2、    修饰函数

 修饰函数,函数前加static使得函数成为静态函数。但此处的static的含义不是指存储方式,而是指对函数的作用域仅限于本文件(即又称内部函数),它的好处是:不同人编写不同函数时,不用担心自己定义的函数,是否会与其他文件中的函数同名。