使用static关键字的变量声明

paras_47
void main()
{
    static int a=5;
    printf("%i",a--);
    if(a)
        main();
}

该程序打印54321。有人可以解释为什么吗?

假设使用C / C ++,我在这里找到

(1)在函数内部使用静态函数...表示变量一旦初始化,它就保留在内存中,直到程序结束。您可以认为它是变量一直存在,并保持其值,直到程序完全结束为止。例如,您可以使用静态变量来记录函数被调用的次数,只需将这些行包括在内:static int count = 0; 和计数++; 在函数内部。

(2)因为count是一个静态变量,所以“ static int count = 0;”行 只会执行一次。每当调用该函数时,count都将分配有最后一个值。

因此,发生了两件事:从(1)开始,a整个程序将继续存在。从(2)开始,的声明/初始化a将只发生一次。随后对函数的递归调用将不会重新声明/重新初始化a

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 static 关键字声明的问题

来自分类Dev

使用“var”关键字声明变量

来自分类Dev

在 mouseover/mouseout 事件中使用 $this 关键字声明变量

来自分类Dev

与在函数签名中使用“ class”关键字声明一个变量相比,在函数签名中使用“ class”关键字声明一个变量

来自分类Dev

与在函数签名中使用“ class”关键字声明一个变量相比,在函数签名中使用“ class”关键字声明一个变量

来自分类Dev

在C中的定义和声明中使用static关键字

来自分类Dev

带有'is'关键字的局部变量声明与'as'关键字的性能差异

来自分类Dev

对未知的保留关键字使用变量

来自分类Dev

为什么在Swift变量声明中使用关键字“ get”?

来自分类Dev

在C#中的局部变量声明之前使用“ using”关键字?

来自分类Dev

为什么在Swift变量声明中使用关键字“ get”?

来自分类Dev

为什么不在类外部/顶部声明变量以避免使用此关键字?

来自分类Dev

如何在WinForms应用程序的成员之间共享变量(使用static关键字)?

来自分类Dev

从回调方法获取变量而不在Java中使用static关键字

来自分类Dev

在Java中不使用'new'关键字声明数组

来自分类Dev

在类方法声明中使用“super”关键字

来自分类Dev

在razor视图引擎中使用var关键字作为变量,而不是使用显式数据类型进行声明

来自分类Dev

有什么理由不应该对C中的所有变量和函数声明使用“ volatile”关键字吗?

来自分类Dev

为什么不必使用关键字static?

来自分类Dev

在Java中使用static关键字创建对象

来自分类Dev

创建实例时使用static关键字

来自分类Dev

使用ref关键字按引用传递变量

来自分类Dev

使用Python关键字访问类变量

来自分类Dev

如何使用Javascript关键字作为变量名?

来自分类Dev

如何使用关键字作为变量名?

来自分类Dev

使用关键字作为变量名

来自分类Dev

使用sed传递关键字匹配变量时出错

来自分类Dev

自动关键字的声明点

来自分类Dev

类声明中的只读关键字

Related 相关文章

  1. 1

    使用 static 关键字声明的问题

  2. 2

    使用“var”关键字声明变量

  3. 3

    在 mouseover/mouseout 事件中使用 $this 关键字声明变量

  4. 4

    与在函数签名中使用“ class”关键字声明一个变量相比,在函数签名中使用“ class”关键字声明一个变量

  5. 5

    与在函数签名中使用“ class”关键字声明一个变量相比,在函数签名中使用“ class”关键字声明一个变量

  6. 6

    在C中的定义和声明中使用static关键字

  7. 7

    带有'is'关键字的局部变量声明与'as'关键字的性能差异

  8. 8

    对未知的保留关键字使用变量

  9. 9

    为什么在Swift变量声明中使用关键字“ get”?

  10. 10

    在C#中的局部变量声明之前使用“ using”关键字?

  11. 11

    为什么在Swift变量声明中使用关键字“ get”?

  12. 12

    为什么不在类外部/顶部声明变量以避免使用此关键字?

  13. 13

    如何在WinForms应用程序的成员之间共享变量(使用static关键字)?

  14. 14

    从回调方法获取变量而不在Java中使用static关键字

  15. 15

    在Java中不使用'new'关键字声明数组

  16. 16

    在类方法声明中使用“super”关键字

  17. 17

    在razor视图引擎中使用var关键字作为变量,而不是使用显式数据类型进行声明

  18. 18

    有什么理由不应该对C中的所有变量和函数声明使用“ volatile”关键字吗?

  19. 19

    为什么不必使用关键字static?

  20. 20

    在Java中使用static关键字创建对象

  21. 21

    创建实例时使用static关键字

  22. 22

    使用ref关键字按引用传递变量

  23. 23

    使用Python关键字访问类变量

  24. 24

    如何使用Javascript关键字作为变量名?

  25. 25

    如何使用关键字作为变量名?

  26. 26

    使用关键字作为变量名

  27. 27

    使用sed传递关键字匹配变量时出错

  28. 28

    自动关键字的声明点

  29. 29

    类声明中的只读关键字

热门标签

归档