参数变量存储在内存中的什么位置?

Jam*_*ter 4 c variables

我正在用 C 编写一些代码,当遇到一个方法时,我想知道参数变量在内存中的存储位置。我知道以下几点:

全局变量 -> 存储在静态代码段

静态变量 ->

局部自动变量(方法内部)-> 存储在堆栈中

局部静态变量 -> 存储在堆栈中

局部常量变量 -> 存储在堆栈中

假设我的假设是正确的。

但是参数变量存储在哪里?例如:int *(int x, char *c);

谢谢!

编辑: 我知道当我 malloc 某些东西时,它被放置在堆上,但是说我取消引用指针以获取指针位置的值,它也存储在堆中还是现在在堆栈中?

Sha*_*our 6

这取决于许多不同的事情,调用约定是主要要研究的事情。此x86页面进入不同的调用约定,以及如何参数传递给一个函数,这个参考越过调用各种C ++编译器和平台使用的约定。通常,它要么位于直通寄存器的堆栈上。

我对C++(嵌套)函数调用指令的回答- 寄存器也是相关的,并且有一些更有用的链接。