Рубрики

Каковы значения по умолчанию статических переменных в C?

В C, если объект со статической продолжительностью хранения не инициализирован явно, то:
— если он имеет тип указателя, он инициализируется нулевым указателем;
— если он имеет арифметический тип, он инициализируется нулевым (положительным или без знака);
— если это агрегат, каждый элемент инициализируется (рекурсивно) в соответствии с этими правилами;
— если это объединение, первый именованный элемент инициализируется (рекурсивно) в соответствии с этими правилами.

Например, распечатывается следующая программа:
Значение г = 0
Значение сг = 0
Значение s = 0

#include<stdio.h>

int g;  // g = 0, глобальные объекты имеют статическую продолжительность хранения

static int gs; // gs = 0, глобальные статические объекты имеют статическую продолжительность хранения

int main()

{

  static int s; // s = 0, статические объекты имеют статическую продолжительность хранения

  printf("Value of g = %d", g);

  printf("\nValue of gs = %d", gs);

  printf("\nValue of s = %d", s);

  

  getchar();

  return 0;

}

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Ссылки:
Стандарт С99

Рекомендуемые посты:

Каковы значения по умолчанию статических переменных в C?

0.00 (0%) 0 votes