static 关键字的用法(c语言)

来源:互联网 发布:小米wifi无法加入网络 编辑:程序博客网 时间:2024/05/29 23:44

一、两个重要作用:

1.修饰变量

(1)作用域:

a.静态全局变量:仅限于变量被定义的文件,从定义处开始到文件结尾处结束。(其他文件即使用extern声明也无法使用)要想在定义之前使用它,就必须在之前加extern ***语句。

b.静态局部变量:仅在定义变量的局部作用域内。

(2)生命周期:整个程序的存在周期。

(3)存储空间:静态区

(4)只被初始化一次

下面,来看看下面这段程序,测测你对这个到底理解了多少呢?

<span style="font-size:14px;">#include <stdio.h>#include <stdlib.h>void fun(){static int i = 0;printf("%d ", ++i);}int main(){int j = 0;for(j = 0; j < 10; j++){fun();}system("pause");return 0;}</span>


 

上面这段程序的输出结果是什么呢?

因为静态变量只被初始化一次,所以这段程序的结果应该是:1 2 3 4 5 6 7 8 9 10

 

那么,下面这段代码的输出结果又是什么呢?

#include <stdio.h>#include <stdlib.h>     static int i = 0;void fun(){i = 10;printf("%d ", ++i);}int main(){int j = 0;for(j = 0; j < 10; j++){fun();}system("pause");return 0;}

输出结果是什么呢???代码有木有和上面很像。然而结果却是截然不同的,这个程序输出10个11。为什么呢?i只被初始化一次,但它可以被多次赋值哦。

 

2.修饰函数 -->静态函数

改变了函数的作用域:使函数的作用域局限于本文件(又称内部函数),好处是:不同的人编写函数时,不用担心自己定义的函数与其他文件的函数同名。

 

 

 

0 0
原创粉丝点击