在下面的代码中,为什么对于全局变量x多个声明(和一个定义)可以正常工作,但对于y函数内部的局部变量main()却不能正常工作?它显示以下2个错误:


  1)重新声明没有链接的“ y”
  
  2)以前的“ y”声明在这里


为什么对局部变量而不是全局变量显示错误?不仅是我的书,而且该论坛中的以下2个链接都清楚说明了我们可以多次声明一个变量(尽管只能定义一次)。

link1
link2

并请注意解释第一个错误“无连接的y的声明”的“无连接”部分是什么意思?什么联系以及与谁联系?局部变量将在哪里链接?

    #include<stdio.h>

    int x;
    int x;
    int x=303;

    int main(void)
    {

      int y;
      int y;
      int y=776;   //Works fine if above 2 declarations are removed!!

      printf("The value of x is %d,and of y is %d",x,y);

    }

最佳答案

在C和C ++中,函数中的int y;既是声明也是定义。

在C语言中,文件范围(在任何函数之外)中的int x;是一个声明和一个临时定义。允许使用多个临时定义;仅允许一个定义。

关于c - 在C语言中,为什么多个声明对全局变量有效,但对局部变量无效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60225190/

10-12 15:14
查看更多