最近系统复习了一下C语言,看到全局变量和局部变量、动态变量和静态变量时,有个问题。
int v1= 5;
int add(int date)
{
static int v1 =2;
int k;
k = v1 + date;
v1++;
return k;
}
void main()
{
int a,b;
while(1)
{
a = add(5);
v1++;
b = add(5);
a +=b;
a = add(b);
}
}
在局部域中,同名的全局变量被屏蔽。不在局部域,同名的局部变量就被屏蔽。
有点矛盾的是,局部静态变量不也是局部吗,局部的话,函数返回不就释放内存吗?
我个人的感觉就是,static好像没有什么优势,而且还占着内存不放,还不如直接用全局变量。 |