Объявление переменной внутри фигурных скобок
Почему следующий код выдает ошибку? Я не понимаю, почему фигурные скобки имеют значение.
#include<stdio.h>
int main(void)
{
{
int a=3;
}
{
printf("%d", a);
}
return 0;
}
3 ответа
Область действия локальной переменной ограничена блоком между {}.
Другими словами: вне блока, содержащего int a=3;
a
не видно
#include<stdio.h>
int main()
{
{
int a=3;
// a is visible here
printf("1: %d", a);
}
// here a is not visible
printf("2: %d", a);
{
// here a is not visible either
printf("3: %d", a);
}
return 0;
}
Подсказка: переменные области видимости c Google
Переменные, определенные внутри фигурных скобок, существуют только во время выполнения программы внутри фигурных скобок. Когда программа выходит из «}», то, как и в вашем случае, эти переменные уничтожаются, а память, которая раньше была занята, возвращается в систему.
Если вам нужна эта реализация, вы можете изменить ее, чтобы определение было вне фигурных скобок. Например :
c/c++
#include <stdio.h>
int main(){
int a;
{a = 3;}
{printf("%d",a) ;}
return 0;}
Вы не можете получить доступ к переменной за пределами ближайшей пары открывающих и закрывающих фигурных скобок, иначе это приведет к ошибке времени компиляции.