在其他函数中传递局部变量值时出错

Error in passing value of local variable in other function

我正在用 C 编写一个程序,其中我试图在其他函数中使用局部变量的值。假设我有两个函数 foo1 foo2

int foo1()
{
  int a=2,b=3,c;
   c=a+b;
   return c;
 }

int foo2(int c)
{
 printf("Value of C is %d",c);
}

这种方法是否正确,如果不正确,在其他函数中使用局部变量值的方法是什么?

不能也不应直接使用其他函数的局部变量。

但在您的情况下您很幸运:您感兴趣的 foo1() 中的值返回给调用者。

这样你就可以随意使用了:

...
int value = foo1();
foo2(value);
...

甚至更短:

...
foo2(foo1());
...

你可以做到 -

int foo1()
{
  int a=2,b=3,c;
   c=a+b;
   return c;
 }


// c will be passed to the function and printed
int foo2(c)
{
 printf("Value of C is %d",c);
}
// get the result of foo1()
int val = foo1();
// call foo2() with the result of foo1()
foo2(val);

首先,这两个函数 foo1() 和 foo2() 没有关系... 局部变量只有块作用域。 如果您想在其他函数中使用它们,请将它们设为全局或使用按值传递和按引用传递方法将变量从一个函数传递给其他函数...

一种方法是使 c 变量成为全局变量,以便每个函数都可以使用它。 另一种方法是在 foo2() 中调用此返回函数,以便可以打印返回值。 一种方式:

int foo1(){ 
int a=2,int b=3;
int c=a+b;
return c;
}

int foo2(){ 
printf("value of c = %d",foo1());   //returned value of function foo1() used
}

另一种方式是:

int c=0;  //defined global

void foo1()
{ 
int a=2,int b=3;
c=a+b;
}

void foo2()
{ 
printf("value of c = %d",c);
}