在C语言中,变量的值如果未经初始化,那它是不确定的;如果初始化为0,那它的值就是0.
在局部变量前加上“static”关键字,就成了静态局部变量。函数结束时,静态局部变量的存储空间继续维持,每次该函数调用 时,继续使用此空间。它始终驻留在全局数据区,直到main程序运行结束。静态局部变量的初始化与全局变量类似.如果不为其显式初始化,则C++自动为其 初始化为0,但静态局部变量只在定义它的函数中可见。
#include
void func(void);
int main()
{
int count;
for(count=0;count<4;count++) //修改了循环次数,屏幕不滚动
{
printf("At iteration %d:\n",count);
func();
}
system("pause");
return 0;
}
void func(void)
{
int x=0,count;
static int y=0;
for(;x<4;)
printf("x=%d y=%d\n",x++,y++); //修改了循环次数,屏幕不滚动
}
y只在第一次运算时为0,其他只要程序不关闭并且调用了func函数y就会一直累加,因为静态局部变量在程序运行结束才会释放。。
因为y是静态变量,主程序不退出,这个变量就一直存在,所以它的值就会一直保存着。搞明白局部变量、静态变量、全局变量内存是怎么分配的就明白了。
你说的是循环用的变量吧?你在循环外层加一句y=0就可以了。
静态变量只在程序一开始运行的时候赋值