Comment accéder aux membres d’un pointeur dans une variable Struct en C?

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