【发布时间】:2017-11-12 02:53:16
【问题描述】:
所以这段程序编译并运行良好。但我不明白为什么它打印出 41。因为变量不是全局的。它们是函数的局部变量。
为了澄清起见,我以两种不同的方法更改变量名称。变量名相同与结果无关。
#include<stdio.h>
void init();
void _print();
int main(){
init();
_print();
}
void init(){
int myVar;
myVar = 41;
}
void _print(){
int xyz;
printf("%d",xyz);
}
【问题讨论】:
-
我会稍微研究一下头部和堆栈内存分配以及它们是如何工作的。我没有足够的知识来给出明确的答案,但基本上,由于第二个变量已初始化,它指向第一个变量并读取第一个变量的值。如果您以不同的方式命名变量或更改类型,您仍然会得到一致的结果(这里没有随机的东西或“魔法”)。如果你使用 valgrind 来检查程序,它会告诉你执行它的时候有错误。
-
我会这样做@MatthieuRaynauddeFitte。谢谢