Vous êtes sur la page 1sur 7

Devoir N°2 Data structures & Pointers : concepts

Nom & Prénom : MAKHOUKH Ouiame


NB. Tous les schémas demandés doivent être dessinés à l’aide d’un logiciel de dessin est collés dans la zone de réponse

Exercice 1 : Data structures

1. Quel est le rôle d’une structure de données ?


2. Comment créer une structure de données ?

Réponses

1. Structurer et organiser le code.

2. Une structure de données est constituée par les éléments suivants :


 Le mot clé struct.
 Le nom de la structure.
 Les champs de la structure.
 Le début de la structure.
 La fin de la structure.

Exercice 2 : Pointers

1. Quel est le rôle d’un pointeur ?


2. Comment créer un pointeur ?
3. Quelle est la taille nécessaire pour stocker une adresse d’un entier ?
4. Quelle est la taille nécessaire pour stocker une adresse d’un double ?
5. Soit le code source suivant :

int main()
{
double *b;
printf("Entrer b:");
scanf("%lf",b); /*on suppose qu’on saisit 567.8*/
}
Sans ajouter aucune variable, quelles sont les instructions à ajouter pour obtenir le résultat suivant :

NB. votre programme peut afficher une autre valeur au lieu de 00b10c60
Devoir N°2 Data structures & Pointers : concepts
Réponses

1. Un pointeur est un élément destiné à stocker une adresse mémoire.


2. Pour créer un pointeur on fait précéder le nom de la variable par *.
3. 4 octets.
4. 8 octets.
5. #include <stdio.h>
#include <stdlib.h>
int main() {
double *b;
printf("Entrer b: ");
b = (double*)malloc(sizeof(double));
scanf("%lf", b);
printf("Adresse de la memoire allouée est: %p\n", b);
printf("Valeur de la zone memoire allouee est: %.2lf\n", *b);
return 0;
}

Exercice 3 : Pointers
Devoir N°2 Data structures & Pointers : concepts
Soit le programme suivant : Réponse
Schéma 1

1) Donner le schéma qui représente les occupations


mémoire et les valeurs associées pour le code ci-
dessus jusqu’à la ligne 19 (Ligne 19 incluse)
(Schéma1) Schéma 2
2) Donner le schéma qui représente les occupations
mémoire et les valeurs associées pour le code ci-
dessus jusqu’à la fin (schéma 2)
3) Ajouter les instructions (juste avant return) pour
afficher les adresses mémoires occupées
accompagnées de leurs valeurs

Code source final

#include<stdio.h>
#include <stdlib.h>
int main() {
double a=5;
double *b;
b = (double*)malloc(sizeof(double)); // Allouer
de la mémoire pour b
*b=55;
a=*b+5;
b=&a;
*b=a+5;
printf("&a=%p,a=%.2lf\n",&a,a);
printf("&b=%p,b=%.2lf\n",b,*b);
return 0;
}
Devoir N°2 Data structures & Pointers : concepts

Exercice 4 : Pointers

Soit le programme suivant : Réponse


Schéma 1

4) Donner le schéma qui représente les


occupations mémoire et les valeurs associées
pour le code ci-dessus jusqu’à la ligne 18 (Ligne Résultat de la ligne 19 :
18 incluse) (Schéma1) On veut stocker la valeur 55 dans la mémoire pointée
5) Que se passe-t-il à la ligne 19 ? quel est le par ‘b’, mais on a déjà perdu la référence à la
résultat retourné par le programme et mémoire allouée dynamiquement.
pourquoi ? L’exécution ne se termine pas.
6) Après élimination de la ligne 19, donner le Schéma 2
schéma qui représente les occupations mémoire
et les valeurs associées pour le code ci-dessus
jusqu’à la fin (schéma 2)
7) Ajouter les instructions (juste avant return) pour
afficher les adresses mémoires occupées
accompagnées de leurs valeurs
Devoir N°2 Data structures & Pointers : concepts
Code source final

#include<stdio.h>
#include <stdlib.h>
int main() {
double a=5;
double *b;
b = (double*)malloc(sizeof(double));
b=100;
b=&a;
*b=a+5;
printf("&a=%p,a=%.2lf\n",&a,a);
printf("&b=%p,b=%.2lf\n",b,*b);
return 0;
}

Exercice 5 : Data structures & pointers

Un cercle est défini par un point et un rayon. Réponse


Un point est défini par ses coordonnées x et y.

Soit le programme suivant :

Donner le résultat du programme ci-dessus en


Devoir N°2 Data structures & Pointers : concepts
proposant un schéma.

Exercice 6 : Data structures

Un cercle est défini par un point et un rayon. Réponse


Un point est défini par ses coordonnées x et y. Code source

#include<stdio.h>
#include<stdlib.h>
typedef struct{
double x;
Soit le programme suivant : double y;
}Point;
typedef struct{
double rayon;
Point*centre;
}Cercle;
int main(){
Point p;
Cercle c;
p.x=3;
p.y=3;
c.rayon=5;
// Associer le point p au cercle c
c.centre = &p;
return 0;
}
Schéma
Devoir N°2 Data structures & Pointers : concepts

Code source final

#include<stdio.h>
#include<stdlib.h>
#define PI 3.1415926535897932
typedef struct{
double x;
double y;
}Point;
1) Ajouter au code source l’instruction qui permet typedef struct{
d’associer le point p au cercle c. double rayon;
2) Donner le résultat du programme obtenu en Point*centre;
proposant un schéma. }Cercle;
3) Compléter le code source pour obtenir le int main(){
résultat suivant : Point p;
Cercle c;
p.x=3;
p.y=3;
NB. Vous pouvez utiliser l’instruction c.rayon=5;
#define PI 3.1415926535897932 c.centre = &p;
printf("Cercle[rayon=%.2lf,Centre=(%.1lf,
%.1lf),Surface=%.2lf]"
,c.rayon,p.x,p.y,PI*(c.rayon*c.rayon));
return 0;
}

Vous aimerez peut-être aussi