gpt4 book ai didi

c - C中main之外的变量范围

转载 作者:太空狗 更新时间:2023-10-29 16:33:22 24 4
gpt4 key购买 nike

考虑代码:

#include <stdio.h>

int x;

int main (void)
{ }

x 的值在main 中是0。但这是为什么呢?我没有将它声明为 static。或者它是否假定 static 因为它在函数之外?

如果以上为真,它与 extern 有何不同?

最佳答案

它既不是static 也不是extern。它是一个对其所在的编译单元可见的变量,而且对于声明 xextern 变量的所有编译单元也是可见的。

为什么我说它既不是static 也不是extern

如果是extern,那么,肯定有一个不同的编译单元,上面有x声明。显然,这是您唯一的编译单元。

如果它是static,则不允许extern 引用此编译单元中定义的x 变量。我们知道我们可以很容易地为这里声明的这个 x 声明一个 extern 变量。

为什么 0 分配给 x?因为,在 C 中,所有全局变量都初始化为 0。 C99标准的6.7.8(10)是这么说的。

关于c - C中main之外的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5110055/

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