猪猪虾 发表于 2020-11-26 19:23:25

递归打印,很短,为什么一定要加static ,不加的话就会无休止打印

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

void recursion()
{
        printf("hi\n");
        static int count = 10;
        if (--count)
        {
                recursion();
        }
}

int main()
{
   recursion();
   return 0;       
}

dxyxln 发表于 2020-11-26 19:31:18

存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和 static 变量。

猪猪虾 发表于 2020-11-26 20:44:54

dxyxln 发表于 2020-11-26 19:31
存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态 ...

没明白

sunrise085 发表于 2020-11-26 20:53:42

加上static,就是静态变量,存储在静态存储区,count只会初始化一次
之后每次递归,count会减一,当count减到0的时候就不再递归了

但是若不加static,就是局部变量,那么每次递归调用函数recursion的时候,count都会初始化为10,这样就进入无限递归了

a1372245671 发表于 2022-3-24 20:59:43

{:10_289:}
页: [1]
查看完整版本: 递归打印,很短,为什么一定要加static ,不加的话就会无休止打印