如何在C中的另一个函数中使用局部变量的值

How to use values of local variable in another function in C

假设有两个函数,即 function1()function2()

int function1()
{
  int F;
  printf("enter any value");
  scanf("%d",&F); 
  printf("Value is %d",F);
}

function1()中使用了变量F,它是局部变量。如何在另一个函数 function2() 中使用此局部变量 F 的值?

定义另一个接受输入并将其传递给函数 2 的函数,例如:

//main function
int f = function1();//return F from function1
function2(f);

或者如果您可以从 function1 调用 function2,那么您可以这样做:

//function1
function2(F);
//function1 cond..

函数局部变量的生命周期是该函数的局部变量。如果你必须将一个函数内部的局部变量持有的值用于另一个函数,你可以

  1. return 来自 function1().
  2. 的值
  3. 在调用函数中收集 return 值。
  4. 将存储的值作为参数传递给 function2()

注意:以上答案假定 function1()function2() 都是从父函数调用的,可能是 func().


编辑:

如果你需要在其他函数中使用局部变量的多个值,(不使用全局变量),最常见的做法是

  1. 传递一个指向结构的指针作为 function1()
  2. 的参数
  3. 从局部变量中填充function1()里面的成员元素值
  4. 再次将结构(或需要结构的地址)作为参数传递给 function2()

其实,你已经做到了。

F的引用传给scanf就是使用方法。编写自己的函数,您只需要决定是传递引用还是传递值。如果传值

int function(int value) {
 ...
}

这会被称为

function(F);

如果通过引用

int function(int* value) {
  ...
}

这会被称为

function(&F);

嗯,你不能显式地这样做,因为局部变量的作用域和生命周期仅限于该函数。

但是如果你也想在外部使用 F 的变量,最简单的解决方案是使其成为全局变量。

其次,您还可以将 F 作为参数传递给另一个函数。

function2无法使用function1中的局部变量,因为局部变量在function1 return时被销毁了。解决方案是 return 值 f 作为 function1 的结果。

int function1()
{
  int f;
  printf("enter any value");
  scanf("%d", &f); 
  printf("Value is %d", f);  
  return f;  // <-- return the value in local variable f
}


void function2(int f) // <-- pass f as argument to function 
{
   printf("Value is %d", f); // <-- use f inside function2
}


int main(int argc, char* argv[])
{
   int f = function1();  // <-- store value returned by function1 in f 
   ...
   function2(f);  // <-- call function2 by passing f as argument
   ...
   function2(function1()); // <-- passing f directly from function1 to function2

   return 0;
}