Partie 3 - Les tableaux et matrices en langage C

@joekakone

Joseph Konka @joekakone

03/03/2026 · 6 min

Découvrez les structures de données contiguës en C : tableaux à une dimension (vecteurs), matrices 2D, représentation mémoire et accès par indexation.

Jusqu'à présent, pour manipuler des données, nous devions déclarer une variable distincte pour chaque valeur : note1, note2, note3... Cette approche atteint rapidement ses limites : comment ferions-nous s'il fallait stocker et analyser les notes de 500 étudiants ou les pixels d'une image haute définition ?

Déclarer 500 variables distinctes et écrire 500 fois l'instruction scanf() serait impensable. C'est ici qu'interviennent les tableaux.


1. Qu'est-ce qu'un tableau en C ?#

Un tableau (array) est une structure de données fondamentale qui permet de regrouper sous un nom unique une collection ordonnée d'éléments répondant à deux caractéristiques essentielles :

  1. Homogénéité : Tous les éléments du tableau partagent strictement le même type de données (int, float, char, etc.).
  2. Contiguïté en mémoire : Les éléments sont stockés côte à côte, les uns immédiatement après les autres, dans des cases mémoires consécutives de la RAM.
flowchart LR
    subgraph RAM [Allocation Contiguë en RAM pour int notes[5]]
        C0["Index 0\nnotes[0] = 14\nAdresse : 0x1000"] --- C1["Index 1\nnotes[1] = 18\nAdresse : 0x1004"]
        C1 --- C2["Index 2\nnotes[2] = 12\nAdresse : 0x1008"]
        C2 --- C3["Index 3\nnotes[3] = 16\nAdresse : 0x100C"]
        C3 --- C4["Index 4\nnotes[4] = 9\nAdresse : 0x1010"]
    end

Puisque chaque entier int occupe 4 octets, le compilateur accède à l'élément à l'indice \(i\) par une opération arithmétique instantanée en temps constant \(\mathcal{O}(1)\) :

\[\text{Adresse}(\text{notes}[i]) = \text{Adresse\_Début} + i \times \text{sizeof}(\text{int})\]

2. Le principe d'indexation à base zéro (Zero-Based Indexing)#

[!IMPORTANT] En langage C, la numérotation des indices commence toujours à 0 et se termine à \(N - 1\), où \(N\) représente la taille totale du tableau.

Pour un tableau déclaré de 5 éléments : - Le premier élément est notes[0]. - Le dernier élément est notes[4]. - Tenter d'accéder à notes[5] constitue une violation d'accès hors-limites (Out of Bounds), provoquant un comportement imprévisible ou un crash immédiat du programme.


3. Des vecteurs aux matrices multidimensionnelles#

Les tableaux ne se limitent pas à une seule dimension :

  • Tableaux à 1 dimension (Vecteurs) : Une seule rangée de cases mémoires (ex: liste de notes, relevé mensuel de températures).
  • Tableaux à 2 dimensions (Matrices) : Organisés en lignes et en colonnes (ex: grille de morpion, échiquier, pixels d'une image, tableau statistique croisé).
  • Tableaux à \(N\) dimensions : Tenseurs ou volumes de données 3D/4D (ex: coordonnées spatiales et temporelles).
graph TD
    Tableaux[Famille des Tableaux en C]
    Tableaux --> 1D["Tableaux 1D (Vecteurs)\nint notes[10];"]
    Tableaux --> 2D["Tableaux 2D (Matrices)\nfloat grille[3][4];"]
    Tableaux --> Multi["Tableaux Multidimensionnels\nchar cube[5][5][5];"]

Sommaire de la Partie 3#

  1. Tableaux à une dimension : Déclaration, Parcours et Algorithmes
  2. Matrices et Tableaux à deux dimensions
  3. Algèbre matricielle en C (Addition, Transposée, Produit)
  4. Applications pratiques et Algorithmes de tri

Débutons sans attendre avec les tableaux à une dimension dans le chapitre suivant.

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue