通过函数传递变量

时间:2016-02-16 23:37:40

标签: c

如何在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;

1 个答案:

答案 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被调用之前声明(在顶部)。还注意:声明仅显示类型 ,为了强调一点,您通常会将fooint foo (int a);视为声明。)

使用/输出

两者的输出是:

int bar (int x);

我希望这能为你解决一些基础问题。如果没有,你可以进一步询问,但在尝试编译和运行程序之前,你可以更好地找到一本好的C书或教程并学习语言(至少是基础知识) - 它从长远来看,你将花费更少的时间。