我正在尝试将变量从一个函数传递到另一个函数。
例如:
FuncA:从用户接收3个输入,我想在FuncB中使用这3个输入。
我该怎么做?我只是从FuncA返回3个值并将其作为Func B的参数传递给它吗?
我会这样做吗? **不使用指针。
int FuncA(void);
int FuncB(int A, int B, int C, int D, int E);
int main(void)
{
FuncA(void);
FuncB(A,B,C);
}
int FuncA(void)
{
printf("Enter 3 number:");
scanf("%d %d %d" &A, &B, &C);
return A, B, C;
}
int FuncB(int A, int B, int C)
{
.............
}
答案 0 :(得分:6)
首先,每个函数只能return
一个值。这可能会让你问,“如何从FuncA获得A,B和C的值?”
你对指针了解多少?如果你没有牢牢掌握什么指针以及它们是如何工作的,那么解决方案将很难理解。
解决方案是传递3个指针(一个用于A,B和C),以便FuncA可以为它们分配值。这不使用return
关键字。它在内存中的特定位置分配值,即A,B和C.
int FuncA(int* A, int* B, int* C)
{
printf("Enter 3 number:");
scanf("%d %d %d", A, B, C);
}
现在A,B和C包含用户输入,我们可以将这些值传递给FuncB。你的最终代码应如下所示:
int FuncA(int* A, int* B, int *C);
int FuncB(int A, int B, int C);
int main(void)
{
int A;
int B;
int C;
FuncA(&A, &B, &C);
FuncB(A, B, C);
}
int FuncA(int* A, int* B, int* C)
{
printf("Enter 3 number:");
scanf("%d %d %d", A, B, C);
}
int FuncB(int A, int B, int C)
{
// ...
}
答案 1 :(得分:5)
一种方法:
typedef struct {
int a;
int b;
int c;
} ABC;
ABC funcA(void);
{
ABC abc;
printf("Enter 3 numbers: ");
fflush(stdout);
scanf("%d %d %d", &abc.a, &abc.b, &abc.c);
return abc;
}
void funcB1(ABC abc)
{
...
}
void funcB2(int a, int b, int c)
{
...
}
int main(void)
{
funcB1(funcA()); // one alternative
ABC result = funcA(); // another alternative
funcB2(result.a, result.b, result.c);
...
}
答案 2 :(得分:4)
我会像这样设置你的系统:
void FuncA(int *A, int *B, int *C);
int FuncB(int A, int B, int C);
int main(void)
{
// Declare your variables here
int A, B, C;
// Pass the addresses of the above variables to FuncA
FuncA(&A, &B, &C);
// Pass the values to FuncB
FuncB(A, B, C);
}
void FuncA(int *A, int *B, int *C)
{
printf("Enter 3 numbers: ");
fflush(stdout);
scanf("%d %d %d", A, B, C);
}
int FuncB(int A, int B, int C)
{
//...
}
答案 3 :(得分:0)
FuncA正在返回一个int。假设你想用A,B,C参数调用FuncB并返回FuncA的调用者,无论FuncB返回什么,你想要这样的东西。
int FuncA(void)
{
printf("Enter 3 number:");
scanf("%d %d %d" &A, &B, &C);
return FuncB(A, B, C);
}
答案 4 :(得分:-3)
将A,B和C声明为全局变量:
int A, B, C;
int FuncA(void);
int FuncB(int A, int B, int C);
....
并从任何函数访问它们,无论参数与否。或者声明它们是静态全局变量以限制全局范围的可能损坏。