在下面的代码中,为什么对于全局变量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/