3. Внутренняя статическая переменная
Ключевое слово static. Объявляется и определяется внутри одной функции, блока. Инициализируют 0 на стадии компиляции. Создаётся в области данных. Время жизни - работа всей программы, но область видимости только эта функция. При многократном вызове сохраняет своё значение. Инициализирует только 1 раз.
void main (void){
int count;
for (count=1; count<5; count ++){
printf ("%d\n", count);
fun ();
}
}
void fun (void){
static int num;
int i=1;
printf ("%d %d\n", i, num++);
}
4. Регистровая переменная
Ключевое слово register int i. Помещаются в регистры микропроцессора для увеличения скорости вычисления. Если нет свободного регистра, рассматриваются как автоматические. Область видимости блок, в котором были определены. По умолчанию не инициализируются.
5. Автоматические переменные
Ключевое слово auto. Определяются внутри любого блока. Время жизни работа блока. Создаются в области стека. Область видимости блок, в котором были определены. По умолчанию не инициализируются.
Пример 1.
if (i==1){
int j=0;
int k=1;
i++;
}
printf(“%d %d”,j,k); //сообщение об ошибке
Пример 2.
int i;
......
{
int i; Внешнее i не видимо
......
}
...... Здесь опять ее видно
Существуют понятия: область видимости и область существования. Область видимости не может выходить за область существования, но область существования может превышать область видимости.