Menu
Coddy logo textTech

Éléments de tableau - Pointeurs

Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 8 sur 63.

Maintenant que vous comprenez comment les noms de tableaux fonctionnent comme des pointeurs, vous pouvez utiliser ces connaissances pour accéder aux éléments d'un tableau d'une manière complètement différente. Au lieu d'utiliser la notation familière entre crochets comme array[i], vous pouvez utiliser la notation par pointeur pour obtenir le même résultat.

L'idée clé est que array[i] est exactement équivalent à *(array + i). Lorsque vous écrivez array + i, vous indiquez au langage C de se déplacer de i positions vers l'avant à partir du début du tableau. L'opérateur de déréférencement * récupère ensuite la valeur à cet emplacement.

int numbers[5] = {10, 20, 30, 40, 50};
// Ces deux lignes font exactement la même chose :
printf("%d", numbers[2]);    // Affiche 30
printf("%d", *(numbers + 2)); // Affiche également 30

Cette notation de pointeur fonctionne car le langage C calcule automatiquement l'adresse mémoire correcte en fonction de la taille du type de données. Lorsque vous ajoutez 2 à un pointeur de tableau d'entiers, C avance de 2 × sizeof(int) octets, arrivant exactement sur le troisième élément.

Comprendre cette équivalence vous donne de la flexibilité dans votre façon de travailler avec les tableaux et vous prépare à des techniques de pointeurs plus avancées que vous rencontrerez au fur et à mesure de votre apprentissage du C.

challenge icon

Défi

Facile

Écrivez un programme en C qui démontre l'accès aux éléments d'un tableau en utilisant la notation par pointeur au lieu de l'indexation de tableau traditionnelle. Votre programme doit :

  1. Déclarer un tableau d'entiers nommé values avec 6 éléments et l'initialiser avec les valeurs {5, 15, 25, 35, 45, 55}
  2. Utiliser une boucle for pour parcourir tous les éléments du tableau
  3. À l'intérieur de la boucle, utiliser la notation par pointeur *(values + i) pour accéder à chaque élément (n'utilisez pas la notation entre crochets comme values[i])
  4. Afficher chaque élément en utilisant la méthode d'accès par notation de pointeur
  5. Après la boucle, démontrer l'équivalence en affichant le troisième élément (index 2) en utilisant les deux méthodes :
    • D'abord en utilisant la notation par pointeur : *(values + 2)
    • Ensuite en utilisant la notation de tableau traditionnelle : values[2]

Votre sortie doit afficher les résultats dans le format suivant :

Element 0: 5
Element 1: 15
Element 2: 25
Element 3: 35
Element 4: 45
Element 5: 55
Third element via pointer: 25
Third element via array: 25

Ce défi teste votre compréhension de l'équivalence entre array[i] et *(array + i), démontrant comment l'arithmétique des pointeurs vous permet d'accéder aux éléments d'un tableau en utilisant des calculs d'adresses mémoire au lieu de l'indexation traditionnelle.

Aide-mémoire

Les éléments d'un tableau peuvent être accédés en utilisant la notation par pointeur au lieu de la notation par crochets. L'expression array[i] est équivalente à *(array + i).

Lorsque vous écrivez array + i, C se déplace de i positions vers l'avant à partir du début du tableau. L'opérateur de déréférencement * récupère la valeur à cet emplacement.

int numbers[5] = {10, 20, 30, 40, 50};
// Ces deux lignes font exactement la même chose :
printf("%d", numbers[2]);    // Affiche 30
printf("%d", *(numbers + 2)); // Affiche également 30

C calcule automatiquement l'adresse mémoire correcte en fonction de la taille du type de données. Ajouter 2 à un pointeur de tableau d'entiers déplace de 2 × sizeof(int) octets vers l'avant.

Essayez vous-même

#include <stdio.h>

int main() {
    // TODO: Écrivez votre code ici
    // Déclarer et initialiser le tableau 'values' avec 6 éléments
    // Utiliser une boucle for pour afficher chaque élément en utilisant la notation de pointeur *(values + i)
    // Après la boucle, afficher le troisième élément en utilisant à la fois la notation de pointeur et de tableau
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow