这段代码为什么答案是0


fun(int a, int b, int c)
{   c = a * b;  }
int main(void)
{
      int c;

      fun(2, 3, c);
      printf(“%d\n”, c);

      return 0;
}

改成这样,你这个明显是错误写法,你int类型的c连初值都没有,怎么能当参数,同时你的fun函数并未返回a*b的值,只是在函数内部计算了。

int fun(int a, int b)
{   int c;
     c = a * b;  
     return c;
}
int main(void)
{
      int c;
 
      c=fun(2, 3);
      printf(“%d\n”, c);
 
      return 0;
}
 

或者用地址传参

#include <stdio.h> 

fun(int a, int b, int* c)

{   *c = a * b;  }

int main(void)
{
      int c=0;
 
      fun(2, 3, &c);
      printf("%d\n", c);
 
      return 0;
}

有帮助的话采纳一下哦!

其中一个逻辑错误是 函数调用不会改变形参的值 需要传指针地址