Статические переменные в C

Как работать со статическими переменными в 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

We can also omit initializing age to 0 in static int age = 0;, and just write static int age; because static variables are automatically set to 0 when created.

We can also have static arrays. In this case, each single item in the array is initialized to 0:

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

Download my free C Handbook


More clang tutorials: