关于C语言extern存储类:main中是否存在两个同名变量x?
问题解答
不存在两个名为x的变量,整个程序中只有一个全局变量x,所有对x的操作都是针对这个全局变量的。以下是代码的执行流程拆解:
- 全局变量
int x;默认初始化为0。 - 进入
main函数,执行x++,此时全局变量x的值从0变为1。 - 调用
g()函数:g()中没有定义局部变量x,直接操作全局变量x,执行++x后,x的值从1变为2。- 打印
x的值,输出2。
- 回到
main函数,执行printf("%d",x),此时全局变量x的值已经是2,所以再次输出2。 - 最终程序输出为
22,和你给出的结果一致。
另外补充:f()函数中用extern int x;声明的x,同样是引用这个全局变量,并非新的变量。
内容的提问来源于stack exchange,提问作者Rajat Chakraborty
相关产品推荐
相关产品推荐

