Mr666
14-06-2008, 14:07
Привет.
Ниже приведу код иллюстрирующий мой вопрос:
#include <stdio.h>
int main()
{
goto label;
auto int a;
label:
a = -32;
printf("%d\n", a);
}
В результате выполнения программы мы получаем -32, то есть была полноценно использована переменная, код объявления которой при запуске программы выполнится не должен был.
Цитирую из книжки (Программирование на языке СИ) на счёт объявления переменной с классом памяти auto (который я задал явным образом для иллюстрации):
Переменная с классом памяти auto имеет локальное время жизни и видна только в блоке, в котором объявлена. Память для такой переменной выделяется при входе в блок и освобождается при выходе из блока. При повторном входе в блок этой переменной может быть выделен друго участок памяти.
Что-то я не понял как выделилась память для переменной a если код объявления был пропущен с помощью оператора goto?
Ниже приведу код иллюстрирующий мой вопрос:
#include <stdio.h>
int main()
{
goto label;
auto int a;
label:
a = -32;
printf("%d\n", a);
}
В результате выполнения программы мы получаем -32, то есть была полноценно использована переменная, код объявления которой при запуске программы выполнится не должен был.
Цитирую из книжки (Программирование на языке СИ) на счёт объявления переменной с классом памяти auto (который я задал явным образом для иллюстрации):
Переменная с классом памяти auto имеет локальное время жизни и видна только в блоке, в котором объявлена. Память для такой переменной выделяется при входе в блок и освобождается при выходе из блока. При повторном входе в блок этой переменной может быть выделен друго участок памяти.
Что-то я не понял как выделилась память для переменной a если код объявления был пропущен с помощью оператора goto?