Pointer des structures
Résolu
seljazou
Messages postés
185
Statut
Membre
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Encore les pointeurs !!!! :(
S'il vous plait, aidez moi à comprendre.
On suppose qu'on a une structure famille.
struct famille *famille1;
famille1 est un pointeur vers une variable de type structure ( ici famille).
c'est quoi alors la valeur de pointeur? c'est l'adresse de *famille1, mais .... ça n'a pas de valeur!!!! non? On peut avoir les valeurs des champs d'une structure, et non la valeur de la variable de type structure..
Ah ma tête :p
Encore les pointeurs !!!! :(
S'il vous plait, aidez moi à comprendre.
On suppose qu'on a une structure famille.
struct famille *famille1;
famille1 est un pointeur vers une variable de type structure ( ici famille).
c'est quoi alors la valeur de pointeur? c'est l'adresse de *famille1, mais .... ça n'a pas de valeur!!!! non? On peut avoir les valeurs des champs d'une structure, et non la valeur de la variable de type structure..
Ah ma tête :p
Configuration: Windows Vista Firefox 2.0.0.20
2 réponses
-
c'est quoi alors la valeur de pointeur? c'est l'adresse de *famille1, mais .... ça n'a pas de valeur!!!!Ben si, comme le dit Paco, cette valeur est l'adresse où doit se trouver une structure de type famille.
Sauf qu'ici, après la simple déclaration struct famille *famille1;, aucune mémoire n'est réservée et la valeur du pointeur est n'importe quoi; il est donc nécessaire de réserver de la mémoire afin que le pointeur ait une valeur correcte, c'est-à-dire qu'il 'pointe' sur une adresse mémoire valide.
Note qu'on se fiche complètement de la valeur du pointeur en tant que telle, l'important est d'être certain que l'adresse représentée par cette valeur, est valide.
Bonne réflexion et n'oublie pas de refroidir les neurones.-
désolée, je me suis mal exprimée. je reformule.
struct famille *famille1;
famille1 est un pointeur sur une variable (*famille1) qui est de type famille.
quelle est alors la valeur de *famille1 ? Je ne crois pas que ça existe, puisque *famille contient plusieurs champs.
J'espère que ma question est plus claire :) -
famille1 est un pointeur sur une struct famille ;), c'est un struct famille * .
Ce que tu peux faire, si famille1 pointe effectivement déjà sur une struct crée correctement , c'est utiliser " *famille1 " comme une véritable variable de type struct famille. Sa "valeur" comme tu dis est en fait tout le contenu mémoire de la struct famille vers laquelle il pointe. Voir https://c.developpez.com/faq/?page=Les-pointeurs#POINTEURS_struct
Si tu veux utiliser un des champ, tu peux faire (*famille1).NomDuChamp ou plutôt famille1->NomDuChamp si tu veux la valeur d'un champstruct famille maFamille1; struct famille * pointVersUneFam; // si maintenant tu utilises " *pointVersUneFamille " c'est une erreur car pointVersUneFam ne pointe sur rien pointVersUneFam = &maFamille1 ; // maintenant pointVersUneFam pointe bien vers qqchose. struct famille maFamille2; maFamille2 = *pointVersUneFam; // j'ai un petit doute mais il me semble bien que cette ligne assigne maFamille2 avec toutes les valeurs de maFamille1.
tu vois donc que " *pointVersUneFam " a une "valeur" utilisable, c'est celle d'une variable struct ;) , ce que , si j'ai bien compris, tu disais ne pas être une véritable valeur. Je crois que c'est juste une question de mots. C'est clair là ? -
-
-
-
-
la valeur de ce pointeur c'est l'adresse mémoire où se trouve une structure famille.