Manipulation des pointeurs

Steve17_17 - Modifié le 21 mars 2024 à 14:14
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 - 21 mars 2024 à 14:22

Bonjour pouvez vous corriger cet exercice svp ?

Voici un schéma représentant l'état de la mémoire après manipulation des pointeurs :

  1. Donnes la définition de type(s) et la (les) déclaration(s) en C d'une telle structure de donnée;
  2. À partir de tes déclarations, indiques la suite d'instructions permettant d'obtenir une telle structure.
  3. 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:

2 réponses

mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 7 751
21 mars 2024 à 14:22

Bonjour,

  1. 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).
  2. Je suppose que la question signifie "comment reproduire en mémoire ce qui est indiqué sur le schéma". Plusieurs choses ne vont pas:
    1. 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.
    2. 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.
    3. 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)
  3. 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

1
yg_be Messages postés 22746 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 mai 2024 1 477
19 mars 2024 à 17:16

bonjour,

il me semble que tout est faux, 0/20.

0