Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 调用函数不是';行不通_C_Function - Fatal编程技术网

C 调用函数不是';行不通

C 调用函数不是';行不通,c,function,C,Function,我在谷歌上搜索了一下,但还没有找到我的问题的答案。 我想做的是在另一个函数中调用我的函数。 我已将代码缩短了一点,这样您就不会太长了。 这就是我的代码的外观: void hearts(struct Card *cardDeck); int main() { return 0; } void hearts(struct Card *cardDeck) { for (int i = 0; i < 1; i++) { switch (cardDe

我在谷歌上搜索了一下,但还没有找到我的问题的答案。 我想做的是在另一个函数中调用我的函数。 我已将代码缩短了一点,这样您就不会太长了。 这就是我的代码的外观:

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?
    }

}
void hearts(结构卡*卡片组);
int main()
{
返回0;
}
空心(结构卡*卡片组)
{
对于(int i=0;i<1;i++)
{
开关(cardDeck[i]。值+1)
{
案例ACE:printf(“ACE”);
打破
机箱插孔:printf(“插孔”);
打破
案例女王:printf(“女王”);
打破
案例王:printf(“王”);
打破
默认值:printf(“%d”,卡片组[i]。值+1);
打破
}
printf(“红心”);
printf(“\n”);
}
}
void randomize(){
int随机卡;
随机卡片=卡片()%4+1;
if(随机卡==1){
hearts();//这给了我一个错误,为什么?
}
}
所以基本上,我不能调用hearts(),我的意思是,VisualStudio给了我一个错误,我调用的参数太少,我不理解。
我想在这里得到一些指导。

你创造了空虚的
hearts()struct
,调用它时,您没有添加您输入的参数,因此编译器将抛出错误。
你需要给它一个指针,用于卡片。

看,你是如何声明心脏的

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 
        }

您需要给
hearts
一个指向一副卡片的指针。1)使用正确的原型声明器。C不是C++。code>void f()
在两种语言中的意思不一样!2) 在
main
int main(){return 0;}
??@Olaf中不调用任何函数,在函数定义中,
void f()
是非常好的。请帮自己一个忙,只使用Windows编译器创建Windows程序。对于其他C语言,请使用C编译器。
void hearts()
是一个声明符。它使用了古老的不完整语法。剩下的答案不清楚,我做了太多的C++。不管怎样,我已经知道了空洞的结构。事实上,有了这个
心的声明,你可以用任意数量的任何类型的参数来调用它。哦,我明白了,谢谢!所以,当我在main中调用函数randomize()时,它会接受任何参数吗?或者如何调用它?因为当我调用randomize()时,它会给我一个错误,但是如果我将函数改为int randomize()并调用它,我会得到一些垃圾号,比如-823213的红心。。。我该如何解决这个问题?@phil\u sw:只要不想在结构卡上执行任何操作,就可以直接调用randomize(),无需任何参数。好吧,当我主要调用randomize()时,它会给我一个错误。@phil\u sw:如果函数的返回类型为void,你不应该尝试存储返回值,否则它会给出错误。如果您试图存储退货,请相应地说明正确的退货类型。