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

时间:2015-04-14 12:38:35

标签: c variables local

我在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);
}

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

4 个答案:

答案 0 :(得分:2)

首先,这两个函数foo1()和foo2()不相关... 和局部变量只有块范围。 如果你想在其他函数中使用它们,请将它们设为全局或使用pass by value并通过引用方法传递以将变量从一个函数传递给其他函数...

答案 1 :(得分:1)

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

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

这样你可以随意使用它:

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

甚至更短:

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

答案 2 :(得分:0)

你可以这样做 -

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

答案 3 :(得分:0)

一种方法是使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);
}