一、两个重要作用:
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.修饰函数 -->静态函数
改变了函数的作用域:使函数的作用域局限于本文件(又称内部函数),好处是:不同的人编写函数时,不用担心自己定义的函数与其他文件的函数同名。
本文详细解析了静态变量和静态函数的特点与用法,包括作用域、生命周期、存储空间及初始化特性等,并通过实例演示了如何正确使用这些特性。
2045

被折叠的 条评论
为什么被折叠?



