Je ne suis pas nouveau en C, mais je viens de découvrir un problème auquel je dois faire face. Comment accéder au membre d’une structure qui est un pointeur sur une autre structure?
ex.
typdef struct { int points; } sortingbute; typedef struct { int year; sortingbute *victor; } game; int main(){ sortingbute myVictor; myVictor.points = 10; game myGame; myGame.year = 1994; // Runs fine myGame.victor = myVictor; // I want to point the victor member of the game struct to //myVictor object... But it gives me an error }
Comment pourrais-je corriger cela? Je sais que j’aurais dû créer la variable myGame en tant que pointeur .. mais je demande si je peux le faire avec une variable struct normale.
Essayer:
myGame.victor = &myVictor;
Ce problème n’a rien à voir avec les structures en tant que telles. Vous essayez simplement de copier une variable de données dans un pointeur, ce qui n’est pas valide. Au lieu de myGame.victor = myVictor;
, laissez myGame.victor indiquer l’ adresse de myVictor.
myGame.victor = &myVictor;
Si vous voulez indiquer le membre vainqueur, vous devez passer le pointeur vainqueur (adresse, sens de la mémoire, …).
Donc, cela devrait être:
myGame.victor = &myVictor;
typdef struct { int points; } sortingbute; typedef struct { int year; sortingbute *victor; } game; int main(){ sortingbute myVictor; myVictor.points = 10; game myGame; myGame.year = 1994; myGame.victor = &myVictor; }
here victor
est un pointer
vers sortingbute
, vous devez donc fournir l’ address
de myvictor
Donc, erreur dans la dernière ligne de votre code, voici la bonne
changé en ceci dans la dernière ligne: myGame.victor=&myVictor
Le vainqueur de la structure du jeu est un pointeur. Donc, vous devriez assigner l’adresse de myVictor. Quelque chose comme ça:
myGame.victor = &myVictor; printf("Points is: %d",myGame.victor->points);