Объявление переменной внутри фигурных скобок

Почему следующий код выдает ошибку? Я не понимаю, почему фигурные скобки имеют значение.

#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;}

Вы не можете получить доступ к переменной за пределами ближайшей пары открывающих и закрывающих фигурных скобок, иначе это приведет к ошибке времени компиляции.

Другие вопросы по тегам