Comment initialiser un tableau en C en attribuant une valeur identique à chaque élément ?

Dans le langage C, les tableaux sont des moyens simples pour stocker des données dans la mémoire en vue de les manipuler par la suite.

Dans le langage C, les tableaux sont des moyens simples pour stocker des données dans la mémoire en vue de les manipuler par la suite. Si initialiser un tableau avec une même valeur pour tous les éléments est très facile pour un tableau de petite taille, cela peut devenir plus compliqué pour un tableau plus important (Lire notre autre astuce la plus populaire sur C : Comment afficher les nombres de 1 à 1000 en C ou C++ sans boucle ni structure conditionnelle ?).

La méthode la plus connue pour initialiser un tableau consiste à déclarer chacun des éléments. C'est la méthode la plus simple mais elle peut être longue à écrire pour un très grand tableau :

int monTableau[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; //Notation très rapide pour un faible nombre d'éléments, mais plus compliquée s'ils sont nombreux.

Si la valeur avec laquelle vous souhaitez initialiser les éléments du tableau est 0, alors il existe une notation raccourcie qui fonctionne quelle que soit la taille du tableau mais uniquement avec la valeur 0 :

int monTableau[1000] = { 0 } //Les 1000 éléments du tableau sont initialisés avec la valeur 0

Si le compilateur que vous utilisez pour votre programme est GCC, une notation permet d'initialiser tous les éléments d'un tableau avec la valeur de son choix :

int monTableau[1000] = {[0 ... 999] = 5};

Il est possible d'utiliser également les macros afin de définir des suites de valeurs que l'on insérera à loisir dans le code afin d'initialiser le tableau comme on le souhaite :

#define VAL_1X 5
#define VAL_2X VAL_1X, VAL_1X
#define VAL_4X VAL_2X, VAL_2X
#define VAL_8X VAL_4X, VAL_4X
#define VAL_16X VAL_8X, VAL_8X
#define VAL_32X VAL_16X, VAL_16X
int monTableau[53] = { VAL_32X, VAL_16X, VAL_4X, VAL_1X };