-2
#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”的值,我该如何实现呢?

4

1 回答 1

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);
}
于 2013-10-12T12:43:33.793 回答