C语言新手:为什么y不是从0开始?

2025-04-10 00:34:41
推荐回答(5个)
回答1:

在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++);     //修改了循环次数,屏幕不滚动

}

回答2:

y只在第一次运算时为0,其他只要程序不关闭并且调用了func函数y就会一直累加,因为静态局部变量在程序运行结束才会释放。。

回答3:

因为y是静态变量,主程序不退出,这个变量就一直存在,所以它的值就会一直保存着。搞明白局部变量、静态变量、全局变量内存是怎么分配的就明白了。

回答4:

你说的是循环用的变量吧?你在循环外层加一句y=0就可以了。

回答5:

静态变量只在程序一开始运行的时候赋值