局部变量和静态(static) 局部变量有什么不同: 生存期不一样. 局部变量随着被调用的函数销毁而自行销毁, 静态局部变量则会等待整个程序结束才自行销毁.
例子:
void a()
{
int a = 0;
static int b;
a ++;
b ++;
printf(" a = %d , b = %d ", a, b );
}
void main()
{
a();
a();
}
结果:
a = 1, b = 2;
全局变量和静态全局变量不同之处: 作用域不同. 全局变量在整个工程内有效, 而静态全局变量仅限于当前文件可用.
例子:
工程内有a.cpp 和 b.cpp两个文件.
a.cpp下定义了一个全局变量int g_Int;
b.cpp想要引用g_Int, 只需声明 extern int g_Int 则可以正常使用. 函数也一样. extern void a();之后就可以在b文件下使用该函数. 而用static 声明的变量和函数则仅限于当前文件可用.