关于static的隐藏性体现在两个方面:
- 我们知道,当同时编译多个文件时,所有未加static的全局变量和函数都具有全局可见性,但加上static后的变量,只在当前文件可见;
- 另外,static变量和全局变量虽然都存在静态存储区,但是static变量可以控制变量的可见范围,这也体现了它的隐藏性。
我们接下来举例说明,先来看第二条:
#include <stdio.h>
void function2();
void function1();
void function3();
unsigned int iii = 0; //初始化全局变量
void main()
{
TI = 1;
while(1)
{
function1();
function2();
function3();
}
}
/*局部变量记得初始化*/
void function1()
{
unsigned int i = 0; //初始化
++i;
printf("i = %d\n",i);
}
void function2()
{
static unsigned int ii = 0; //初始化
++ii;
printf(" ii = %d\n",ii);
}
void function3()
{
++iii;
printf(" iii = %d\n",iii);
}
输出结果为: