在C函数调用中使整数没有投射的指针
问题描述:
所以我在过去的一个小时内摆弄它后真的很困惑。在C函数调用中使整数没有投射的指针
我想在另一个函数内的另一个函数内调用一个函数。我收到一条错误消息:“传递displayDeck的参数1使得整型指针没有转换,预期的int *但参数的类型为int。”
void printCard(int card)
{
char ranks[RANKS] = {'A','2','3','4','5','6','7','8','9','0','J','Q','K'};
char *suits = "SHDC";
printf("%c%c", ranks[card%RANKS], suits[card/RANKS]);
}
void displayDeck(int deck[])
{
int count = 0;
int cleanDisplay = 0;
while(count < MAXIMUM)
{
if(cleanDisplay == RANKS)
{
printf("\n");
cleanDisplay = 0;
}
printCard(deck[count]);
printf(" ");
cleanDisplay++;
count++;
}
printf("\n\n");
}
void dealCards(int deck[], int hands, int cards)
{
int total = hands * cards;
int counter = 0;
int counter2 = 0;
while(counter < total)
{
if(counter2 == cards)
{
printf("\nPlayer's Hand: \n");
counter2 = 0;
}
displayDeck(deck[counter]);
counter2++;
counter++;
}
}
displayDeck正在接受一个int,我在dealCards函数中调用它也是如此。所以我不确定这里要做什么。我可能需要实现另一个指针?我试图从我创建和洗牌的数组中处理卡片。
我猜测错误是在printCard中的某处,因为这是处理指针的唯一函数。
P.S我对C仍然比较陌生,所以如果这是一种比道歉更简单的错误。
答
你有一个函数void displayDeck(int deck[])
它接受一个数组,期望指向数组的第一个元素的指针。
然后你给它displayDeck(deck[counter]);
这是一个int
。
答
首先,定义为放慢参数
void displayDeck(int deck[])
和
void dealCards(int deck[], int hands, int cards)
不好的C代码sytle,尽量使该
void displayDeck(int *deck)
和
void dealCards(int *deck, int hands, int cards)
因为你希望整个阵列不只是在甲板[计数器] int值替换该呼叫
displayDeck(deck[counter]);
与
displayDeck(deck);
。