调用函数不起作用

时间:2015-12-27 14:09:19

标签: c function

我用Google搜索了一下,但我没有找到任何问题的答案。 我正在尝试做的是在另一个函数中调用我的函数。 我已经缩短了我的代码,所以你的阅读时间不会太长。 这就是我的代码的样子:

void hearts(struct Card *cardDeck);

int main()
{
    return 0;
}
    void hearts(struct Card *cardDeck)
{
    for (int i = 0; i < 1; i++)
    {
        switch (cardDeck[i].value + 1)
        {
        case ACE: printf("Ace ");
            break;
        case JACK: printf("Jack ");
            break;
        case QUEEN: printf("Queen");
            break;
        case KING: printf("King ");
            break;
        default: printf("%d ", cardDeck[i].value + 1);
            break;
        }
        printf("of hearts");
        printf("\n");
    }
}
void randomize() {
    int random_card;
    random_card = card() % 4 + 1;

    if (random_card == 1) {
        hearts(); //It gives me an error here, why?
    }

}

所以基本上,我不能叫心(),我的意思是,视觉工作室给我一个错误,我称之为太少的论点,我不明白。 会喜欢这里的指导。

2 个答案:

答案 0 :(得分:2)

看,你是如何宣布心灵的。

void hearts(struct Card *cardDeck)

这意味着它将指向结构卡。 你没有任何争吵地打电话。

if (random_card == 1) {
        hearts(); //calling without any argument .
    }

因此,解决方案是创建一个指向结构卡和

的指针
if (random_card == 1) {
           struct Card c1;
            hearts(&c1); //passing the address of struct card 
        }

答案 1 :(得分:-2)

您使用hearts();创建了空struct,并且在调用它时,您并未添加您放入的参数,因此您的编译器会抛出错误。 你需要给它一个指针,用于卡片。