C-全局变量和局部变量混乱


#include <stdio.h>
int g;
void afunc(int x)
{
     g = x; /* this sets the global to whatever x is */
}
int main(void)
{
     g = 10;    /* global g is now 10 */
    afunc(20); /* but this function will set it to 20 */
     printf("%dn", g); /* so this will print "20" */
     return 0;
}

printf的输出为20。但是局部变量g = 10,那么为什么它要打印20而不是10本地变量是否比全局变量更大?

printf的输出为20。但是局部变量g = 10,所以为什么 是打印20而不是10

您没有更改本地变量。您在main中的线

g = 10;

正在更改全局变量。同样,对afunc的函数调用更改全局变量。您的整个程序只有一个变量g,这是全局。

您在示例中没有局部变量称为 g。只有一个全球。因此预期输出。

如果您想要一个称为g的本地变量,请尝试以下操作:

int main(void)
{
     int g = 10;    /* local g, initialized with 10 */
     ...

使用上述,您现在有两个不同的变量称为g,其中一个仅在main中可见。

,因为您实际上没有声明新变量。你刚提到g = 10;

您实际上并未定义一个新变量,只是引用了一个全局。希望这会有所帮助。

相关内容

  • 没有找到相关文章