我了解如何使用scanf()
,但是我很难理解scanf()
如何访问其他功能及其堆栈框架。我知道必须为scanf()
提供一个向其写入数据的地址,但是我认为每个函数在其自己的堆栈框架中都有自己的私有数据。
例如,以简单的程序段为例
#include <stdio.h>
int main() {
int x;
x = 2;
scanf("%d",&x);
printf("%d",x);
}
在此程序中,
main
有其自己的堆栈框架,其中局部变量x
初始化为2。我的理解是scanf()
也有其自己的堆栈框架。我知道scanf()
被赋予了x
的地址,但是scanf()
如何被允许更改main
堆栈框架中的数据? 最佳答案
在此程序中,main有其自己的堆栈框架,其中局部变量x初始化为2。
正确。
我的理解是scanf()也有自己的堆栈框架。
正确。
Scanf()被赋予x的地址,但是scanf()如何被允许在main的堆栈帧中更改数据?
由谁或什么允许?没有什么可以阻止它这样做的。它有地址。它是在同一过程中。它可以简单地写入该地址。
关于c - scanf()如何将数据写入其他函数的堆栈帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51620281/