Pointer des structures

Résolu
seljazou Messages postés 175 Date d'inscription   Statut Membre Dernière intervention   -  
Pacorabanix Messages postés 3248 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

2 réponses

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
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.
1
seljazou Messages postés 175 Date d'inscription   Statut Membre Dernière intervention   1
 
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 :)
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663 > seljazou Messages postés 175 Date d'inscription   Statut Membre Dernière intervention  
 
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 champ
struct 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à ?
0
seljazou Messages postés 175 Date d'inscription   Statut Membre Dernière intervention   1 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
Devine, j'étais en train de lire le même page internet que tu m'as envoyée :p


la valeur de ce *famille1 est donc tout le contenu mémoire de la variable *famille1?

J'espère que c ça, c plus logique :)

merci
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663 > seljazou Messages postés 175 Date d'inscription   Statut Membre Dernière intervention  
 
oui... enfin le terme "variable", c'est plutot : "*famille1 est le contenu mémoire de la variable vers laquelle pointe famille1". A noter que famille1 ne pointe pas forcément vers une variable "standard", mais peut-être vers une struct famille crée dynamiquement avec malloc
0
seljazou Messages postés 175 Date d'inscription   Statut Membre Dernière intervention   1 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
compris !

c résolu. Merci.

PS: auj on a commencé le cours sur le JAVA :s
Courage... Courage... :D

merci beaucoup :)
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
la valeur de ce pointeur c'est l'adresse mémoire où se trouve une structure famille.
0