gpt4 book ai didi

c - 在 C 语言中,为什么多重声明对全局变量有效但对局部变量无效?

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:36 25 4
gpt4 key购买 nike

在下面的代码中,为什么多个声明(和一个定义)对全局变量 x 有效,但对局部变量 y 无效,它位于 主要()功能?它显示以下 2 个错误:

1) redeclaration of 'y' with no linkage

2) previous declaration of 'y' was here

为什么显示局部变量错误而不是全局变量?不仅是我的书,而且来自该论坛的以下 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/46562749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com