【问题标题】:How to use values of local variable in another function in C如何在C中的另一个函数中使用局部变量的值
【发布时间】:2015-03-09 10:36:14
【问题描述】:

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

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

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

【问题讨论】:

  • 程序中的任何地方,main() 之外
  • 哪个是“母亲”功能和“女儿”功能 - function1 或 2?或者它们是兄弟函数,都是其他函数(function3)的女儿?
  • 这段代码编译不正确。 (int 函数,没有返回)
  • 作为参数发送或者使用全局变量。

标签: c variables local


【解决方案1】:

其实你已经做到了。

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

int function(int value) {
 ...
}

会被称为

function(F);

如果传递引用

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

会被称为

function(&F);

【讨论】:

    【解决方案2】:

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

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

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


    编辑:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        【解决方案4】:

        好吧,您不能明确地这样做,因为局部变量的范围和生命周期仅限于该函数。

        但如果你也想把 F 的变量放在外面,最简单的解决办法就是让它成为全局变量。

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2019-03-30
            • 1970-01-01
            • 2021-10-01
            • 1970-01-01
            • 1970-01-01
            • 2019-10-04
            • 1970-01-01
            • 1970-01-01
            • 2016-08-05
            相关资源
            最近更新 更多