Brauchen Sie Hilfe zu verstehen, was ich falsch mache. Dies ist Teil einer Aufgabe, die ich durch Fernunterricht mache. Vielen Dank.Zeiger nicht auf ein Element eines Arrays von Strukturen setzen
Ich gebe einen Zeiger und eine Reihe von Spielern (2 Spieler). Wo Spieler sind eine Struktur:
struct player
{
char name[NAMELEN + 1];
int score; /* count of number of pieces on the board */
colour token_colour;
};
struct player * play_game(struct player players[])
{
gameboard board;
struct player * current, *other;
gameboard_init(board);
player_init(&players[0],1);
player_init(&players[1],2);
**randomize_game(players,current);**
/* replace this NULL return value with the appropriate return value */
return NULL;
}
Ich versuche dann den Zeiger (curplayer) an den Spieler zu setzen, die die randomize Rolle gewann den ersten zu gehen. Ich gehe mit GDB durch und kann bestätigen, dass der Wert vor dem Befehl gleich ist. Bitte helfen Sie! erläutert, was im falsch zu machen:
curplayer= &players[0];
void randomize_game(struct player players[],struct player* curplayer)
{
int p;
time_t t;
srand((unsigned) time(&t));
p = rand() % 2;
if(p==0){
**curplayer= &players[0];**
players[0].token_colour = CC_WHITE;
players[1].token_colour = CC_RED;
}else{
**curplayer= &players[1];**
players[0].token_colour = CC_RED;
players[1].token_colour = CC_WHITE;
}
}
Dank
Klassische pitfall: 'randomize_game (Spieler, Strom),' kann überhaupt nicht ändern 'current'. Parameter werden nach Wert in C übergeben. –
Gleiches Problem wie hier erklärt [http://stackoverflow.com/questions/39486797/dynamic-memory-access-only-works-inside-function]. – Lundin