对于这个static的作用,文字表述有三项;
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
1.1
#include<stdio.h>
int add( )
{
int x=2;
x++;
return x;
}
int main(void)
{
int i;
for(i=0;i<3;i++)
printf("%d/t",add());
while(1);
}
1.2
#include<stdio.h>
int add( )
{
static int x=2;
x++;
return x;
}
int main(void)
{
int i;
for(i=0;i<3;i++)
printf("%d/t",add());
while(1);
}
1.3
#include<stdio.h>
int x=2;
int add( )
{
x++;
return x;
}
int main(void)
{
int i;
for(i=0;i<3;i++)
printf("%d/t",add());
while(1);
}
结果是(1.1) 3 3 3 (1.2)3 4 5 (1.3)3 4 5
3.模块内
程序
1.cpp
void display();
static void test();
int main()
{
display();
test();
}
2.cpp
#include<stdio.h>
void display()
{
printf("The display() has been called");
}
static void test()
{
printf("The test() has been called");
}
结果:报错1.cpp 'void test()' used but never defined