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

6ss1mwsb  于 2022-12-03  发布在  其他
关注(0)|答案(6)|浏览(282)

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

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

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

8dtrkrch

8dtrkrch1#

其实你已经做了。
F的引用传递给scanf是如何使用它的。编写自己的函数时,只需确定是传递引用还是值。如果传递值

int function(int value) {
 ...
}

这就叫做

function(F);

如果传递引用

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

这就叫做

function(&F);
nfzehxib

nfzehxib2#

函数局部变量的生存期对于该函数是局部的。如果必须将一个函数内部的局部变量保存的值用于另一个函数,可以

  1. return返回function1()中的值。
    1.在调用函数中收集返回值。
    1.将存储值作为参数传递给function2()
    注意:上述答案假设function1()function2()都是从父函数调用的,可能是func()
    编辑:
    如果您需要在其他函数中使用局部变量的多个值(不使用全局变量),最常见的做法是
    1.将指向结构的指针作为function1()的参数传递
    1.从局部变量中填充function1()内的成员元素值。
    1.再次将结构(或者,需要结构的地址)作为参数传递给function2()
km0tfn4u

km0tfn4u3#

定义另一个接受输入并将其传递给function2函数,如下所示:

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

或者,如果可以从function1调用function2,则可以执行以下操作:

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

7vhp5slm4#

当然,您不能显式地这样做,因为局部变量的作用域和生存期仅限于该函数。
但是如果你想让F的变量也在外面,最简单的解决方案就是把它变成全局变量.
其次,您也可以将F作为参数传递给另一个函数。

c7rzv4ha

c7rzv4ha5#

function2不可能使用function1中的局部变量,因为当function1返回时,局部变量已被销毁。解决方法是返回值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;
}
agxfikkp

agxfikkp6#

可以创建新的function2(),并通过值--〉function2(F)进行传递

相关问题