Manipulation des pointeurs
Bonjour pouvez vous corriger cet exercice svp ?
Voici un schéma représentant l'état de la mémoire après manipulation des pointeurs :
- Donnes la définition de type(s) et la (les) déclaration(s) en C d'une telle structure de donnée;
- À partir de tes déclarations, indiques la suite d'instructions permettant d'obtenir une telle structure.
- Peut-on récupérer la variable pointée de TR ? Pourquoi ?
Voici les réponses :
1) Définition de la structure en C :
typedef struct { int entier; char chaine[10]; } Donnee;
Déclaration des variables PR, QR et TR :
Donnee PR = {271, "MARTIN"}; Donnee QR = {271, "MARTIN"}; Donnee TR = {271, "MARTIN", "2/3/83", 30};
2) Suite d'instructions pour obtenir une telle structure :
Donnee PR = {271, "MARTIN"}; Donnee QR = PR; Donnee TR = {PR.entier, PR.chaine, "2/3/83", 30};
3) Oui, on peut récupérer la variable pointée par TR. Dans ce cas, TR contient les valeurs des variables PR et QR, donc on peut accéder aux valeurs de ces variables à travers TR.
A voir également:
- Mode anti manipulation
- Mode avion - Guide
- Mode sécurisé samsung - Guide
- God mode - Guide
- Mode d'emploi - Guide
- Mode suivi des modifications - Guide
2 réponses
Bonjour,
- D'après ton schéma, chaque instance de ta structure à 4 attributs (par exemple 271, "Martin", "2/3/83", 30) or la déclaration structure n'en a que 2. De plus il serait plus adroit de nommer ta structure par rapport à ce quelle représente (ici, une Personne) ainsi que ses attributs (manifestement un identifiant, un prénom, une date de naissance, et sans doute un âge si l'exercice se place en 2013).
- Je suppose que la question signifie "comment reproduire en mémoire ce qui est indiqué sur le schéma". Plusieurs choses ne vont pas:
- PR, QR, TR sont des pointeurs, donc de type Personne * (pas Personne). Ce qui signifie que tu dois créer trois structures (disons P, Q, T) et initialiser PR, QR, TR conformément à ton schéma.
- Tes déclarations ne sont pas cohérentes avec le schéma (et notamment le fait que chaque instance est composée de 4 attributs). Seul TR est correct.
- PR et QR pointent sur la même instance (disons Q). TR ne pointe sur rien (et devrait en toute rigueur être initialisé à NULL). Note que sur ton schéma, seule Q est pointée (ni R, ni T)
- Je n'ai personnellement pas compris la question, vu que TR est un pointeur non initialisé sur le schéma, et donc utiliser le pointeur directement engendrera une erreur de segmentation (et dans ce cas la réponse est non). Mais si la question est peut-on l'initialiser de sorte à pointer sur Q ou T, la réponse est oui.
Bonne chance
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
il me semble que tout est faux, 0/20.