Les tableaux en langage C peuvent sembler complexes pour les débutants.
Sans une compréhension claire, manipuler les données efficacement devient difficile, ce qui peut entraîner des erreurs coûteuses.
Cet article décompose les concepts clés des tableaux en C, y compris leur déclaration, initialisation, et utilisation, pour vous guider dans leur maîtrise.
Développez votre expertise en C et ouvrez la voie à des projets passionnants.
Introduction aux Tableaux en C
Dans ce chapitre, nous allons explorer en détail les tableaux en langage C. Nous commencerons par définir ce qu’est un tableau et examinerons sa syntaxe, en mettant en lumière comment déclarer et initialiser des tableaux dans ce langage. Nous approfondirons également la manière dont les tableaux sont représentés en mémoire. Ensuite, nous aborderons l’utilisation de l’opérateur sizeof pour déterminer la taille des tableaux. Enfin, nous explorerons les tableaux multidimensionnels, en détaillant comment ils sont déclarés, initialisés et représentés.
Déclaration et Initialisation de Tableaux C
Déclaration d'un Tableau :
La déclaration d’un tableau en langage C permet de préciser plusieurs éléments importants :
- Le type des éléments :Cela définit le type de données que le tableau va contenir. Par exemple,int,float,char, etc.
- Le nom du tableau :C’est l’identificateur du tableau que vous utiliserez pour référencer le tableau dans le code.
- La taille du tableau :Cela spécifie le nombre d’éléments que le tableau peut contenir. Cette taille est définie entre crochets[ ]dans la déclaration. Par exemple,int tableau[10];déclare un tableau de 10 entiers.
- Les qualificateurs(optionnels) :Vous pouvez utiliser des qualificateurs pour indiquer des propriétés spécifiques des éléments du tableau, commeconstpour rendre les éléments constants (non modifiables) ouvolatilepour indiquer que les éléments peuvent être modifiés de manière imprévisible, souvent en interaction avec du matériel.
- La classe de mémorisation(optionnelle) :Vous pouvez également spécifier la classe de mémorisation des éléments du tableau, commestatic,extern,auto, ouregister. Cela détermine la durée de vie et la portée du tableau.
Exemple
Déclaration d’un tableau de 10 pointeurs vers entiers constant avec une durée de vie statique.
static const ungigned int *ad, x, t[10]
Déclaration d’un tableau de 5 entiers constants.
const int t[5]
Déclaration d’un tableau de 4 entiers.
int tab[4];
Initialisation d'un Tableau :
Les éléments du tableau sont initialisés lors de la déclaration. L’indice des tableaux commence à 0.
int tab[4] = {14, 41, 123, 9};
où
int tab[0] = 14;
int tab[1] = 41;
int tab[2] = 123;
int tab[3] = 9;
Représentation en Mémoire
Un tableau est stocké en mémoire comme une suite continue de variables. Par exemple, si un int occupe 4 octets, un tableau de 4 entiers occupera 16 octets en mémoire.
- Illustration :
Adresse | Valeur |
---|---|
0x2500 | 14 |
0x2504 | 41 |
0x2508 | 123 |
0x250C | 9 |
Les adresses des éléments successifs d’un tableau augmentent par la taille du type de données (4 octets pour un int).
L'Opérateur sizeof
L’opérateur sizeof retourne la taille d’un tableau en octets, pas en éléments. Par exemple :
int tab[4] = {1, 2, 3, 4};
- Exemple d’exécution du code :
Pour obtenir le nombre d’éléments dans le tableau, divisez la taille totale par la taille d’un élément :
size_t n = sizeof(tab) / sizeof(tab[0]);
printf("Nombre d'éléments : %zu\n", n);
- Exemple d’exécution du code :
Tableaux Multidimensionnels en C
Déclaration
La déclaration d’un tableau 2D en C se fait en spécifiant deux dimensions entre crochets. Voici la syntaxe générale :
type nom_du_tableau[dim1][dim2];
où type est le type des éléments du tableau, dim1 est le nombre de lignes et dim2 est le nombre de colonnes. Par exemple :
int tab[4][3];
Cela déclare un tableau de 4 lignes et 3 colonnes d’entiers.
Représentation en Mémoire
En mémoire, les tableaux 2D sont stockés de manière contiguë, comme une séquence linéaire d’éléments. Chaque ligne du tableau est stockée l’une après l’autre. Par exemple, pour un tableau de 4×3, les éléments seront stockés comme suit :
Ligne 0 : élément0, élément1, élément2 Ligne 1 : élément3, élément4, élément5 Ligne 2 : élément6, élément7, élément8 Ligne 3 : élément9, élément10, élément11
Initialisation
Les tableaux 2D peuvent être initialisés à l’aide d’accolades. Voici un exemple :
int tab[2][3] = {{1, 2, 3}, {4, 5, 6}};
Dans cet exemple : tab est un tableau de 2 lignes et 3 colonnes avec des valeurs spécifiques attribuées à chaque élément.
Accès aux Éléments
Les éléments d’un tableau 2D sont accessibles en utilisant deux indices, l’un pour la ligne et l’autre pour la colonne :
int valeur = tab[1][2]; // Accède à l'élément de la 2ème ligne et 3ème colonne
- Exemple d’exécution du code :
Exemple de Code
Ce programme en C montre l’initialisation et l’affichage des éléments d’un tableau bidimensionnel (2D) de 2 lignes et 3 colonnes, ainsi que leurs adresses en mémoire. Le tableau tab2D est initialisé avec deux lignes : {1, 2, 3} et {4, 5, 6}. À l’aide de deux boucles imbriquées, le programme parcourt chaque élément du tableau, où i représente l’indice de la ligne et j celui de la colonne. Pour chaque élément, la valeur ainsi que son adresse mémoire sont affichées grâce à l’instruction printf. Cette approche permet de visualiser la structure des tableaux en mémoire et comment les éléments sont disposés linéairement en mémoire.
#include
int main() {
int tab2D[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("tab2D[%d][%d] = %d, Adresse : %d\n", i, j, tab2D[i][j],
&tab2D[i][j]);
}
}
return 0;
}
- Exemple d’exécution du code :
Pointeurs et Tableaux en C
Ce programme en C illustre l’utilisation des pointeurs avec des tableaux multidimensionnels.
#include
int main() {
int tab2D[2][3] = {{1, 2, 3}, {4, 5, 6}};
// Pointeur vers le premier élément du tableau bidimensionnel
int(*ptrTab2D)[3] = tab2D; // pointeur vers un tableau de 3 entiers
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("tab2D[%d][%d] = %d, Adresse : %p\n", i, j, *(*(ptrTab2D + i) + j),
(void *)(&(*(*(ptrTab2D + i) + j))));
}
}
return 0;
}
- Exemple d’exécution du code :
Explication détaillée du code :
Déclaration et Initialisation du Tableau Bidimensionnel :
int tab2D[2][3] = {{1, 2, 3}, {4, 5, 6}};
- Cette ligne déclare un tableau bidimensionnel nommé tab2D avec 2 lignes et 3 colonnes.
- Il est initialisé avec les valeurs fournies :la première ligne contient 1, 2, 3 et la deuxième ligne contient 4, 5, 6.
Déclaration du Pointeur :
int (*ptrTab2D)[3] = tab2D; // pointeur vers un tableau de 3 entiers
- Ici, ptrTab2D est un pointeur vers un tableau de 3 entiers.
- En initialisant ptrTab2D avec tab2D, il pointe vers le premier tableau de 3 entiers (la première ligne du tableau bidimensionnel).
Parcours du Tableau Bidimensionnel :
- Les boucles for imbriquées parcourent les lignes (i) et les colonnes (j) du tableau.
*(*(ptrTab2D + i) + j);
- ptrTab2D + i déplace le pointeur vers la ligne i du tableau.
- *(ptrTab2D + i) accède au tableau d’entiers de cette ligne.
- *(*(ptrTab2D + i) + j) accède à l’élément spécifique à la colonne j de cette ligne.
Affichage des Valeurs et Adresses :
printf("tab2D[%d][%d] = %d, Adresse : %p\n", i, j, *(*(ptrTab2D + i) + j),
(void *)(&(*(*(ptrTab2D + i) + j))));
- Affiche l’élément actuel du tableau (tab2D[i][j]) ainsi que son adresse mémoire.
- Le format %p est utilisé pour afficher l’adresse mémoire de l’élément, et le cast (void*) est fait pour s’assurer que l’adresse est correctement formatée pour l’affichage.
Conclusion sur les Tableaux en C
Ce chapitre a couvert les fondamentaux des tableaux en langage C, leur déclaration, initialisation, et représentation en mémoire. Nous avons également exploré les tableaux multidimensionnels et comment les manipuler en mémoire.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment déclarer un tableau en C ?
Comment initialiser un tableau en C ?
Comment les tableaux sont-ils représentés en mémoire en C ?
Quelle est l'utilité de l'opérateur sizeof en C ?
Comment fonctionne un tableau multidimensionnel en C ?
Conclusion
Ce chapitre a couvert les fondamentaux des tableaux en C, leur déclaration, initialisation, et représentation en mémoire. Quels autres concepts du langage C souhaitez-vous explorer davantage ?