Menu
Coddy logo textTech

Noms de tableaux comme pointeurs

Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 7 sur 63.

Les tableaux et les pointeurs en C entretiennent une relation particulière qui est fondamentale pour comprendre comment C manipule 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 tu as un tableau comme int numbers[5];, le nom numbers est essentiellement un pointeur qui pointe toujours vers numbers[0]. Tu peux considérer le nom du tableau comme un pointeur intégré que tu n’as pas besoin de déclarer 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 cruciale : numbers et &numbers[0] vous donnent 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 de techniques de pointeurs avec les tableaux, ce qui peut rendre votre code plus flexible et efficace. La différence essentielle 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. Affecter le nom du tableau numbers au pointeur ptr
  4. Afficher l’adresse stockée dans numbers à l’aide de printf avec le spécificateur de format %p
  5. Afficher l’adresse du premier élément &numbers[0] à l’aide de printf avec le spécificateur de format %p
  6. Afficher l’adresse stockée dans ptr à l’aide de printf avec le spécificateur de format %p
  7. Afficher la valeur du premier élément à l’aide du nom du tableau : *numbers
  8. Afficher la valeur du premier élément à l’aide du pointeur : *ptr

Votre sortie doit afficher les résultats au 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 Logique & Flux

Entraînez-vous par vous-même : Compilateur C en ligne