如果没有明确定义,函数参数是否给定本地地址space?

Are function parameters given local address space if not explicitly defined?

这是一个简单的程序:

simple.c

int inverse(int input)
{
  if( input == 0 )
    return 1;
  else
    return 0;
}

int main()
{
  inverse(1);
  return 0;
}

我的问题是:

是否inverse()推送名为

的参数的本地副本
int input

还是只是在每次访问时都引用该参数?

请记住。 int input 定义是函数 inverse() 的局部定义。所以每次调用inverse()时,input的堆栈space是单独分配的,一旦inverse()执行完毕,input变量将不存在。

* 没有任何编译器优化

函数 inverse 的调用者提供所有参数的值。然后函数 inverse 将这些值转换为局部变量,就好像你声明了

int input;

函数内部。

在函数或块内声明的变量称为局部变量。它们只能由该函数或代码块内的语句使用。局部变量不为自身以外的函数所知。

在这种情况下,int input 是局部变量。

执行结束后,不会再有对变量int input的引用。 +1 @Sourav 关于编译器优化的提示。