int Mul (int x)
{
int y =0;
y = x *3;
return y;
}
int Main(void)
{
int var =0;
scanf ("%d", &var);
int result =0;
result = Mul(var);
printf ("%d", result);
}
现在我的问题是:
变量y
在堆栈上创建,当函数Mul
返回时,它将被清除。然后如何将其分配给结果?
result = Mul(var);
答案 0 :(得分:0)
C认为函数“Mul”在返回时具有此值,就好像它是变量一样。请注意,Mul被声明为int。使用“return”将y的值放在堆栈中,用于赋值给“result”。该值从堆栈中弹出,实际上将其清除。
答案 1 :(得分:0)
声明 回归y; 不返回y的值,而是返回y值的副本。此副本存储在结果变量中。当您使用x和y的新值再次执行代码时,旧值将被覆盖。
答案 2 :(得分:0)
您正在返回变量(y)的值而不是它自身的变量。变量“y”也是mul函数的局部变量,所以你不能返回“y”,因为它的范围是该函数的局部范围。
每当存在除void数据类型之外的函数调用时,函数调用语句将被函数返回的值替换。
例如。
在你的情况下,如果 X = 3 然后 y = 3 * 3评估为9 因此
y=9
和
return y
只是意味着返回9就像你返回0一样。
所以表达式
result=mul(var) //is replaced by result=9.
我认为这已经足够解释了