#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;
您实际上并未定义一个新变量,只是引用了一个全局。希望这会有所帮助。