如何在C中将变量从一个函数传递给另一个函数?例如,我想从功能卷传递sumOfDice
并使用sumOfDice
作为passLine
函数:这是我的代码:
int roll()
{
int dieRollOne = (random()%6) + 1;
int dieRollTwo = (random()%6) + 1;
printf("On Dice One, you rolled a: %d\n", dieRollOne);
printf("On Dice Two, you rolled a: %d\n", dieRollTwo);
int sumOfDice = dieRollOne + dieRollTwo;
printf("The sum of you Dice is: %d\n", sumOfDice);
return sumOfDice
}
int passLine(int sumOfDice)
{
// other code
printf("the sum of dice is: %d\n", sumOfDice);
}
我会为sumOfDice
使用全局变量,但我们不允许这样做。我是否必须使用星号,例如:int *num;
答案 0 :(得分:1)
Nasim,这是C中最基本的概念之一。在您使用的任何C书/教程中都应该很好地解释。也就是说,每个人都需要在某个地方学习。为了向函数传递值,您可以从函数声明开始。
C中的函数可能会收到任意数量的参数,但可能只返回一个值(或根本没有值)。函数需要在参数列表中指定的参数。函数声明采用以下形式:
type name (parameter list);
类型是函数(或void
)的返回类型。 参数列表包含传递给函数的变量的类型。虽然您通常会在声明中看到包含类型和名称的参数列表,但只有类型在声明中是必需的。函数定义提供函数代码和函数返回。函数 definition 的参数列表将包含传递的参数的类型和名称。
(注意:您可能会看到旧的K& R函数定义,而没有任何类型依赖于默认类型为int
的事实。该类型定义/参数列表已过时。 Function declaration: K&R vs ANSI)
现在您已经有了如何声明/定义函数的 Cliff's-notes 版本,一个简短的示例应该说明函数的传递/返回值。第一个示例显示了main
函数之前的函数定义。在这种情况下,不需要单独的声明:
#include <stdio.h>
int bar (int x) {
return x + 5;
}
int foo (int a) {
return bar(a);
}
int main (void) {
int n = 5;
printf ("\n n = %d, foo(%d) = %d\n\n", n, n, foo(n));
return 0;
}
(注意:函数bar
在函数foo
之前放置,因为函数foo
依赖于bar
。在调用之前,函数必须始终至少具有声明。)
另一个示例显示在main
之前使用 definitions 之前提供函数声明的常见用法是:
#include <stdio.h>
int foo (int);
int bar (int);
int main (void) {
int n = 5;
printf ("\n n = %d, foo(%d) = %d\n\n", n, n, foo(n));
return 0;
}
int foo (int a) {
return bar(a);
}
int bar (int x) {
return x + 5;
}
(注意:,即使函数foo
在此bar
之前定义 ,也没有问题。为什么?因为{{1在bar
被调用之前声明(在顶部)。还注意:声明仅显示类型 ,为了强调一点,您通常会将foo
和int foo (int a);
视为声明。)
使用/输出强>
两者的输出是:
int bar (int x);
我希望这能为你解决一些基础问题。如果没有,你可以进一步询问,但在尝试编译和运行程序之前,你可以更好地找到一本好的C书或教程并学习语言(至少是基础知识) - 它从长远来看,你将花费更少的时间。