J'aimerai savoir comment ca se passe au niveau de la memoire lorsqu'un (pointeur de type structure) pointe vers une variable(de type structure, Bien sur !!) . Est ce que chaque champ (ou composant) du pointeur a pour valeur l'adresse de chaque champ correspondant aux champs de la variable en question ?
Par exemple :
typedef struct abonnement abonne;
struct abonnement
{
char nom[30],prenom[30];
int numAbonne;
};
abonne abonne1;
abonne *ptrSurAbonne=&abonne1;
// Est ce que *ptrSurABonne.nom=&abonne1.nom ??
Un pointeur, c'est juste une variable qui contient un nombre. Il n'a pas de champs, c'est juste l'adresse de quelque chose.
Ici c'est l'adresse d'une structure. Et il manque juste des parenthèses à ta question.
&(*ptrSurABonne).nom == &abonne1.nom
ou : &ptrSurABonne->nom == &abonne1.nom
ou : ptrSurABonne->nom == abonne1.nom
L'étoile permet de dire : j'accède à l'endroit qu'indique ce nombre, et ça a le type pointé, on appelle cela le déréférencement du pointeur. Donc *ptrSurAbonne est ici la même chose que abonne1.
Un pointeur, c'est juste une variable qui contient un nombre. Il n'a pas de champs, c'est juste l'adresse de quelque chose.
Ici c'est l'adresse d'une structure. Et il manque juste des parenthèses à ta question.
&(*ptrSurABonne).nom == &abonne1.nom
ou : &ptrSurABonne->nom == &abonne1.nom
ou : ptrSurABonne->nom == abonne1.nom
L'étoile permet de dire : j'accède à l'endroit qu'indique ce nombre, et ça a le type pointé, on appelle cela le déréférencement du pointeur. Donc *ptrSurAbonne est ici la même chose que abonne1.
struct abonnement
{
char nom[30],prenom[30];
int numAbonne;
};
ça dit que les données de type "structure abonnement" sont représentées en mémoire par un "bloc" de 60 et quelques octets consécutifs (les uns après les autres, pour ceux qui ont des difficultés avec les mots de plus de 3 syllabes).
Les 30 premiers pour le champ "nom", etc. Le nombre d'octets pour le numAbonne, ça dépend de l'architecture et du choix de représentation des entiers par le compilateur. En général 4 ou 8 octets.
Bref, ce bloc commence à une certaine adresse qui est aussi celle du champ nom. Subtilité, elles ne sont pas du même type (struct abonnement * pour la structure, char * pour le champ nom).
Un pointeur, c'est fait pour contenir une adresse. On le définit avec le type qui va bien
En recherche d'emploi.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent