如何在C中的函数中重置静态变量的值?

时间:2013-10-12 12:38:55

标签: c

#include <stdio.h>

void foo()
{
  int a = 10;
  static int sa = 10;

  a += 5;
  sa += 5;

  printf("a = %d, sa = %d\n", a, sa);
}


int main()
{
  int i;

  for (i = 0; i < 10; ++i) {
    foo();
  }
}

我理解“函数内部的静态变量在调用之间保持其值”。如果我想稍后重置“sa = 10”的值,我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

目前,每次调用foo()时,两个变量都会增加5。但是sa将保留函数调用之间的值:

i | a  | sa
0 | 15 | 15
1 | 15 | 20
...

重置sa的值只需为此变量赋值:

void foo()
{
  int a = 10;
  static int sa = 10;

  a += 5;
  sa += 5;

  // reset sa
  if (sa > 100) {
    sa = 10;
  }

  printf("a = %d, sa = %d\n", a, sa);
}