2017-02-20 3 views
-2

So bin ich wirklich verwirrt, nachdem ich in der letzten Stunde damit herumgespielt habe.Macht Zeiger von Integer ohne eine Umwandlung in C-Funktionsaufrufen

Ich versuche, eine Funktion innerhalb einer anderen Funktion innerhalb einer anderen Funktion aufzurufen. Ich erhalte eine Fehlermeldung, die besagt: "Übergabe von Argument 1 von displayDeck macht Zeiger von Integer ohne eine Umwandlung. Erwartete int * aber das Argument ist vom Typ 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 akzeptiert ein int, und so ist mein Aufruf dazu in der dealCards-Funktion. Also ich bin mir nicht sicher, was ich hier machen soll. Ich muss vielleicht einen anderen Zeiger implementieren? Ich versuche, Karten aus einem Array auszugeben, das ich erstellt und gemischt habe.

Ich rate, der Fehler ist irgendwo innerhalb printCard, da das die einzige Funktion ist, die Zeiger behandelt.

P.S Ich bin immer noch ziemlich neu in C, wenn dies eine Art von einfachem Fehler als Entschuldigung ist.

Antwort

1

Sie haben eine Funktion void displayDeck(int deck[]), die ein Array akzeptiert, das einen Zeiger auf das erste Element eines Arrays erwartet.

dann geben Sie es displayDeck(deck[counter]);, die eine einzige int ist.

0

Vor allem die Definition der Paramter wie

void displayDeck(int deck[]) 

und

void dealCards(int deck[], int hands, int cards) 

ist nicht gut c Code sytle, versuchen Sie, dass

void displayDeck(int *deck) 

und

void dealCards(int *deck, int hands, int cards) 
machen

und diesen Aufruf ersetzen

displayDeck(deck[counter]); 

mit

displayDeck(deck); 

, weil Sie das gesamte Array nicht nur den int-Wert an Deck [counter] wollen.

Verwandte Themen