gpt4 book ai didi

c - 在 C 中,为什么多重声明对于全局变量可以正常工作,但对于局部变量却不行?

转载 作者:行者123 更新时间:2023-11-30 16:05:38 24 4
gpt4 key购买 nike

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

1) redeclaration of 'y' with no linkage

2) previous declaration of 'y' was here

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

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/

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