C中函数的返回值范围

时间:2016-03-03 03:39:37

标签: c

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);

3 个答案:

答案 0 :(得分:0)

C认为函数“Mul”在返回时具有此值,就好像它是变量一样。请注意,Mul被声明为int。使用“return”将y的值放在堆栈中,用于赋值给“result”。该值从堆栈中弹出,实际上将其清除。

答案 1 :(得分:0)

声明         回归y; 不返回y的值,而是返回y值的副本。此副本存储在结果变量中。当您使用x和y的新值再次执行代码时,旧值将被覆盖。

答案 2 :(得分:0)

  1. 您正在返回变量(y)的值而不是它自身的变量。变量“y”也是mul函数的局部变量,所以你不能返回“y”,因为它的范围是该函数的局部范围。

  2. 每当存在除void数据类型之外的函数调用时,函数调用语句将被函数返回的值替换。

  3. 例如。

    在你的情况下,如果     X = 3 然后     y = 3 * 3评估为9 因此

    y=9
    

    return y 
    

    只是意味着返回9就像你返回0一样。

    所以表达式

    result=mul(var) //is replaced by result=9.
    

    我认为这已经足够解释了