静态局部变量可重复定义吗

#include<stdio.h>
#include<conio.h>

void main(void)
{
void print(void);
for(int i=0;i<5;i++)
print();
getch();
}

void print()
{
static int x=1000;
printf(“x is %d\n”,x);
x++;
}

我的参考书中是这样写的,但我有些困惑for语句使得调用了5次print函数,那也就是5次申请了局部静态变量x,这可以吗?还有就是,第一次print函数调用结束后x=1oo1,可第二次1OO0这个值不会冲掉1001吗?

你的概念很有问题,什么变量都不可以重复定义。写在函数中的自动变量声明或定义,在进入这个函数时声明或定义,退出这个函数时自动撤消了,所以根本不存在“重复定义”的问题。第二个问题,用static修饰声明的变量不是自动变量,叫“静态变量”;这种变量在第一次调用这个函数时定义,每次调用生成的值保存到下次调用时使用……
补充:局部静态变量的定义时刻,请参看风雷雪电对我的评论!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-15
局部变量只在被调用的函数中被定义,从函数中返回时,就释放了。你不要被变量的名称迷惑了,虽然名字相同,但再一次定义时,又会存放在内存的不同地址中,不会混淆。你只当它们的名称不一样就行了。
就像3班有个人叫张三,4班有个人也叫张三。3班的班主任和4班的班主任都不会把他们搞混的。
第2个回答  2019-12-05
这个应该是可以的,不太了解的。
相似回答