2017-02-20 74 views
-2

所以我在过去的一个小时内摆弄它后真的很困惑。在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仍然比较陌生,所以如果这是一种比道歉更简单的错误。

回答

1

你有一个函数void displayDeck(int deck[])它接受一个数组,期望指向数组的第一个元素的指针。

然后你给它displayDeck(deck[counter]);这是一个int

0

首先,定义为放慢参数

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);