Édition pédagogique en français
Tableau de pointeurs en C
Distinguez un tableau d’adresses d’un pointeur vers un tableau.

int *p[3] déclare trois pointeurs vers int ; int (*p)[3] déclare un pointeur vers un tableau de trois entiers. Les parenthèses changent le regroupement et donc le sens de la déclaration.
Chaque élément doit contenir une adresse valide avant déréférencement. Les objets peuvent être éloignés, mais doivent rester vivants pendant leur utilisation. Pour afficher une adresse avec %p, convertissez l’argument en void *.
Un tableau de pointeurs vers des chaînes n’est pas une matrice rectangulaire de caractères. Utilisez const char * pour les littéraux et ne les modifiez pas. Dessinez les pointeurs et leurs objets pour vérifier le modèle.
Code source
#include <stdio.h>
int main(void)
{
int first = 10;
int second = 20;
int third = 30;
int *items[] = {&first, &second, &third};
size_t count = sizeof items / sizeof items[0];
*items[1] = 25;
for (size_t i = 0; i < count; ++i) {
printf("items[%zu] points to %d\n", i, *items[i]);
}
printf("second is now %d\n", second);
return 0;
}Ouvrir dans le compilateurQuestions fréquentes
Pourquoi le code et certains résultats restent-ils en anglais ?
Les mots-clés C, les identifiants, les commentaires du programme et les sorties attendues restent ceux de la version originale pour conserver un code exécutable et des tests cohérents. Les explications et les consignes sont traduites.