如何在C语言中使用静态变量

101 阅读1分钟

如何在C语言中使用静态变量

在一个函数中,你可以使用static 关键字来初始化一个静态变量

我说 "在函数内部",是因为全局变量默认是静态的,所以不需要添加关键字。

什么是静态变量?如果没有指定初始值,静态变量会被初始化为0,并在不同的函数调用中保留该值。

考虑一下这个函数。

int incrementAge() {
  int age = 0;
  age++;
  return age;
}

如果我们调用一次incrementAge() ,我们会得到1 作为返回值。如果我们多次调用它,我们将总是得到1的返回值,因为age 是一个局部变量,它在每次函数调用时都被重新初始化为0

如果我们把这个函数改成。

int incrementAge() {
  static int age = 0;
  age++;
  return age;
}

现在我们每次调用这个函数时,都会得到一个递增的值。

printf("%d\n", incrementAge());
printf("%d\n", incrementAge());
printf("%d\n", incrementAge());

将给我们带来

1
2
3

我们也可以在static int age = 0; ,省略将age 初始化为0,只写static int age; ,因为静态变量在创建时就自动设置为0。

我们也可以有静态数组。在这种情况下,数组中的每个单项都被初始化为0。

int incrementAge() {
  static int ages[3];
  ages[0]++;
  return ages[0];
}