如何在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..
函数局部变量的生命周期是该函数的局部变量。如果你必须将一个函数内部的局部变量持有的值用于另一个函数,你可以
return
来自 function1()
. 的值
- 在调用函数中收集 return 值。
- 将存储的值作为参数传递给
function2()
。
注意:以上答案假定 function1()
和 function2()
都是从父函数调用的,可能是 func()
.
编辑:
如果你需要在其他函数中使用局部变量的多个值,(不使用全局变量),最常见的做法是
- 传递一个指向结构的指针作为
function1()
的参数
- 从局部变量中填充
function1()
里面的成员元素值
- 再次将结构(或需要结构的地址)作为参数传递给
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;
}
假设有两个函数,即 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..
函数局部变量的生命周期是该函数的局部变量。如果你必须将一个函数内部的局部变量持有的值用于另一个函数,你可以
return
来自function1()
. 的值
- 在调用函数中收集 return 值。
- 将存储的值作为参数传递给
function2()
。
注意:以上答案假定 function1()
和 function2()
都是从父函数调用的,可能是 func()
.
编辑:
如果你需要在其他函数中使用局部变量的多个值,(不使用全局变量),最常见的做法是
- 传递一个指向结构的指针作为
function1()
的参数
- 从局部变量中填充
function1()
里面的成员元素值 - 再次将结构(或需要结构的地址)作为参数传递给
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;
}