Leçon 35 : Pointeurs Partie 2 : Pointeurs et Tableaux
En C, il existe une relation intime et cruciale entre les pointeurs et les tableaux. Ils sont souvent traités de manière interchangeable dans les expressions.
Le nom du tableau comme pointeur
Lorsqu'il est utilisé dans une expression (sauf avec sizeof ou &), le nom d'un tableau est converti en un pointeur constant vers son premier élément.
Soit : c int arr[5] = {10, 20, 30, 40, 50};
arrest équivalent à&arr[0](l'adresse du premier élément).
Accès aux éléments d'un tableau avec des pointeurs
Nous pouvons utiliser l'arithmétique des pointeurs (abordée ensuite) ou l'indexation de tableau sur le pointeur.
c int *ptr = arr; // ptr contient maintenant l'adresse de arr[0]
// Indexation via le nom du tableau : printf("%d\n", arr[2]); // 30
// Indexation via le pointeur : printf("%d\n", ptr[2]); // 30
// Déréférencement avec arithmétique de pointeur : printf("%d\n", *(arr + 2)); // 30 printf("%d\n", *(ptr + 2)); // 30
Pointeurs vers des chaînes de caractères
Les chaînes sont couramment manipulées via des pointeurs car un littéral de chaîne ("Hello") est intrinsèquement un pointeur vers son premier caractère.
c char *s = "C Programming"; // s pointe vers 'C' printf("%s\n", s); // Affiche toute la chaîne jusqu'à \0 printf("%c\n", *s); // Affiche 'C' printf("%c\n", *(s + 2)); // Affiche ' ' (espace)
Point clé à retenir : Comprendre que arr[i] n'est qu'un raccourci syntaxique pour *(arr + i) est essentiel pour maîtriser le C.