Menu
Coddy logo textTech

Noms de tableaux comme pointeurs

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

Les tableaux et les pointeurs en C entretiennent une relation spéciale qui est fondamentale pour comprendre comment C gère les données en mémoire. Lorsque vous déclarez un tableau, le nom du tableau lui-même agit comme un pointeur constant vers le premier élément du tableau.

Cela signifie que lorsque vous avez un tableau comme int numbers[5];, le nom numbers est essentiellement un pointer qui points toujours vers numbers[0]. Vous pouvez considérer le nom du tableau comme un pointer intégré que vous n'avez pas besoin de Declare séparément.

int numbers[5] = {10, 20, 30, 40, 50};
// 'numbers' points to the first element
// numbers == &numbers[0]  // Ceux-ci sont équivalents !

Cette équivalence est essentielle : numbers et &numbers[0] vous donnent tous les deux exactement la même adresse mémoire. Le nom du tableau est simplement un moyen plus pratique de faire référence à l'adresse du premier élément sans avoir à utiliser l'opérateur d'adresse.

Comprendre cette relation ouvre la voie à l'utilisation des techniques de pointeurs avec les tableaux, ce qui peut rendre votre code plus flexible et plus efficace. La différence clé est que, contrairement aux pointeurs ordinaires, les noms de tableaux sont des pointeurs constants - vous ne pouvez pas modifier ce vers quoi ils pointent.

challenge icon

Défi

Facile

Écrivez un programme C qui démontre l'équivalence entre les noms de tableaux et les pointeurs vers leurs premiers éléments. Votre programme doit :

  1. Déclarer un tableau d'entiers nommé numbers avec 4 éléments et l'initialiser avec les valeurs {10, 20, 30, 40}
  2. Déclarer un pointeur vers un entier nommé ptr
  3. Assigner le nom du tableau numbers au pointeur ptr
  4. Afficher l'adresse stockée dans numbers en utilisant printf avec le spécificateur de format %p
  5. Afficher l'adresse du premier élément &numbers[0] en utilisant printf avec le spécificateur de format %p
  6. Afficher l'adresse stockée dans ptr en utilisant printf avec le spécificateur de format %p
  7. Afficher la valeur du premier élément en utilisant le nom du tableau : *numbers
  8. Afficher la valeur du premier élément en utilisant le pointeur : *ptr

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

Array name address: [address]
First element address: [address]
Pointer address: [address]
Value via array name: 10
Value via pointer: 10

Ce défi démontre que le nom du tableau agit comme un pointeur constant vers le premier élément, et que numbers, &numbers[0] et ptr contiennent tous la même adresse mémoire lorsque ptr reçoit le nom du tableau.

Essayez vous-même

#include <stdio.h>

int main() {
    // TODO: Écrivez votre code ici
    // 1. Déclarez et initialisez le tableau 'numbers' avec {10, 20, 30, 40}
    // 2. Déclarez un pointeur vers un entier nommé 'ptr'
    // 3. Assignez le nom du tableau au pointeur
    // 4. Affichez toutes les adresses et valeurs requises
    
    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