大括号内的变量声明

问题描述 投票:0回答:3

为什么下面的代码会产生错误?我不明白为什么花括号会产生影响。

#include<stdio.h>

int main(void)
{
    {
        int a=3;
    }

    {
        printf("%d", a); 
    }

    return 0;
}
c variable-declaration curly-braces printf-debugging
3个回答
9
投票

局部变量的作用域仅限于 {} 之间的块。

换句话说:包含

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

提示:google c 范围变量


1
投票

大括号内定义的变量仅当程序在大括号内运行时才存在。当程序退出“}”时,就像您的情况一样,这些变量将被销毁,并且曾经占用的内存将返回给系统。

如果您需要此实现,您可以对其进行更改,以便定义位于花括号之外。 例如:

   c/c++

   #include <stdio.h>
   
   int main(){

    int a;

    {a = 3;}

    {printf("%d",a) ;}
    
    return 0;}

0
投票

您无法访问最近的一对左大括号和右大括号之外的变量,否则会出现编译时错误

© www.soinside.com 2019 - 2024. All rights reserved.