静态如何在函数调用中保持其值

pku*_*arn 0 c static

最近在一次采访中,我遇到了这个问题"静态变量如何在函数调用中保持其先前的值".想了一会但是真的想不出任何有说服力的答案.有人可以解释一下吗?尝试做谷歌,找不到我的信息.

Sar*_*nan 5

静态变量存储在.data区域中,其中存储了所有全局变量.并且这些全局变量和静态变量被分配为exec操作的一部分(即创建新进程/分支新进程).

         -----------------------
         | Command Line Arg    |
         |---------------------|
         |     Stack           |
         |      \/             | < Grow downward
         |---------------------|
         |      /\             |
         |     Heap            | < Grows Upward
         |---------------------|
         |     .bss            | (Uninitialized global variables)
         |---------------------|
         |     .data           | (initialized global/static variables)
         |---------------------| 
         |     .text           |
         -----------------------
Run Code Online (Sandbox Code Playgroud)

在上图中.data是存储在函数内声明或声明为全局变量的所有静态变量的区域.希望这可以帮助.