函数参数的内存位置

Jan*_*cak 2 c memory argument-passing

我正在准备 UNIX 考试,有一道关于 C 变量的内存位置的问题。假设我们有这样的代码

char sth;
int some_function(int arg) {
   int some_int;
   // some code here
}
Run Code Online (Sandbox Code Playgroud)

所以我想它sth位于堆上、some_int堆栈上,但位于哪里arg?有人可以解释一下 C 变量是如何管理的吗?

谢谢

Alo*_*ave 5

请注意,这一切都取决于实现。C 标准甚至没有提到栈、堆等词。它只是讨论变量的预期行为,具体取决于变量的存储(、static等)。 externregister

尽管如此,通常arg会位于为该函数提供的堆栈帧中。它的范围仅限于函数,就像 的范围一样some_int

顺便说一下,sth它不在堆上,它有一个静态全局存储。