我正在尝试将结构传递给递归程序中的函数。我不确定结构是否传递给函数。
// 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, ¤tDeck);
}
void helper(CardDeck leftDeck, CardDeck rightDeck, CardDeck *currentDeck)
{
int leftFlag;
int rightFlag;
leftFlag = 20;
rightFlag =30;
}
使用呼叫助手功能时会出错。添加了更多代码来阐明。谢谢。
您的函数帮助器已原型化为void helper(CardDeck *leftDeck, CardDeck *rightDeck, CardDeck *currentDeck)
,这意味着它将其作为第一个参数CardDeck *
,第二个参数CardDeck *
和最后一个CardDeck *
并且原型定义为void helper(CardDeck leftDeck, CardDeck rightDeck, CardDeck * currentDeck)
,与先前的原型不匹配。要解决您的问题,请尝试在*
和leftDec
中同时添加rightDeck
,使其与原型匹配。