如果没有明确定义,函数参数是否给定本地地址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 关于编译器优化的提示。
这是一个简单的程序:
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 关于编译器优化的提示。