Programmation séquentielle en C, 2020-2021
Orestis Malaspinas (A401), ISC, HEPIA
2020-10-28
enum
(1/2)Un type énuméré est un ensemble de valeurs constantes: les variantes.
En C
les variantes sont des entiers numérotés à partir de 0.
On peut aussi donner des valeurs “custom” C enum days { monday = 2, tuesday = 8, wednesday = -2, thursday = 1, friday = 3, saturday = 12, sunday = 9 };
enum
(2/2)Très utile dans les switch ... case
Le compilateur vous prévient qu’il en manque!
Un pointeur étant un type comme un autre, on peut définir un pointeur sur un pointeur:
Cela peut servir à deux choses principalement
On peut même aller plus loin et avoir ds pointeurs de pointeurs de pointeurs … de pointeurs.
Cas pratique
Faites un dessin de ce qui se passe en mémoire!
Modification d’un pointeur en argument à une fonction
Que se passe-t-il si on utilise pas un int32_t **p
mais un int32_t *p
.
Considérons la fonction max
retournant la valeur maximale d’un tableau
L’appel à max
, retourne l’adresse de la fonction en mémoire.
On peut affecter cette valeur à un pointeur.
Le type de la fonction max
est
Le type doit être déclaré avec la signature de la fonction.
On peut alors utiliser l’un ou l’autre indifféremment
On peut passer des fonctions en argument à d’autres fonctions
Ici une fonction de réduction sum()