将结构传递给递归程序上的函数。如何修复编译错误C2664?

问题描述 投票:0回答:1

我正在尝试将结构传递给递归程序中的函数。我不确定结构是否传递给函数。

// poker calls interleave
// interleave calls helper

void interleave(CardDeck *leftDeck, CardDeck *rightDeck);

void poker(CardDeck origDeck);

void helper(CardDeck *leftDeck, CardDeck *rightDeck, CardDeck *currentDeck);

void poker(CardDeck origDeck)
{
    CardDeck leftDeck =     
    {
        leftDeck.cards[MAX_SIZE] = {0}, 
        leftDeck.size = MAX_SIZE
    };

    CardDeck rightDeck =        
    {
        rightDeck.cards[MAX_SIZE] = {0},    
        rightDeck.size = MAX_SIZE
    };
}
void interleave(CardDeck  *leftDeck, CardDeck  *rightDeck)
{
    int leftloop = leftDeck->size;
    int rightloop = rightDeck->size;
    //ger error when I try to call helper
    helper(*leftDeck, *rightDeck, &currentDeck);
}

void helper(CardDeck leftDeck, CardDeck rightDeck, CardDeck *currentDeck)
{
    int leftFlag;
    int rightFlag;
    leftFlag = 20;
    rightFlag =30;
}

使用呼叫助手功能时会出错。添加了更多代码来阐明。谢谢。

c
1个回答
0
投票

您的函数帮助器已原型化为void helper(CardDeck *leftDeck, CardDeck *rightDeck, CardDeck *currentDeck),这意味着它将其作为第一个参数CardDeck *,第二个参数CardDeck *和最后一个CardDeck *

并且原型定义为void helper(CardDeck leftDeck, CardDeck rightDeck, CardDeck * currentDeck),与先前的原型不匹配。要解决您的问题,请尝试在*leftDec中同时添加rightDeck,使其与原型匹配。

热门问题
推荐问题
最新问题