Soit le fragment de programme suivant :
float a = 0.001;
float b = 0.003;
float c, *pa, *pb, *pp;
pa = &a;
*pa *= 2;
pb = &b;
c = 3 * (*pb *pa);
pp = pa;
Après exécution, quelles sont les valeurs de a, b, c, pa, ∗pa, &∗pa, pb, ∗pb, pp, ∗pp ? Vérifiez vos
réponses en écrivant le programme affichant les différentes valeurs.
NB: pour afficher la valeur d'un pointeur avec printf(), on pourra utiliser le spécificateur de format "%p".
Nous souhaitons écrire un programme permettant de faire quelques statistiques pour un ensemble de notes dont le nombre n’est pas connu à l’avance. Le programme devra commencer par demander le nombre de notes à l’utilisateur. Ensuite un tableau de flottants devra être alloué dynamiquement, avant de lire les notes. Le programme affichera ensuite la valeur minimale, la valeur maximale, la moyenne et la médiane des notes. La mémoire allouée devra être libérée avant de quitter le programme.
Un tableau dynamique de n réels est déclaré et alloué par l’incantation suivante :
double *tab = malloc(n * sizeof(double));
Les éléments, comme pour les tableaux statiques, sont accédés par la notation « crochet » : tab[k] .
La mémoire est libérée avec :
free(tab);
Pour allouer dynamiquement un tableau à deux dimensions, une solution est de le modéliser
par un tableau de tableaux. Écrire un programme qui :