Initialiser un tableau à 0 en C
-
Utiliser la fonction de la bibliothèque C
memset()
-
Initialiser le tableau à des valeurs autres que
0
Ce tutoriel présente la façon d’initialiser un tableau à 0
en C.
La déclaration d’un tableau en C est comme indiqué ci-dessous.
char ZEROARRAY[1024];
Elle devient tous les zéros à l’exécution à l’échelle globale. Il existe une méthode d’abréviation s’il s’agit d’un tableau local. La déclaration et l’initialisation sont comme ci-dessous.
char ZEROARRAY[1024] = {0};
Si un tableau est partiellement initialisé, les éléments qui ne sont pas initialisés recevront la valeur 0
du type de données concerné. Le compilateur remplira les entrées non écrites avec des zéros.
Si aucun initialisateur n’est spécifié, les objets ayant un stockage statique seront initialisés à 0. La déclaration est comme indiqué ci-dessous :
static int myArray[10];
Un tableau est initialisé à 0 si la liste des initialisateurs est vide ou si 0 est spécifié dans la liste des initialisateurs. La déclaration est la suivante
int number[5] = {};
int number[5] = {0};
La technique la plus simple pour initialiser un tableau est de boucler tous les éléments et de les mettre à 0.
#include <stdio.h>
int main(void) {
int numberArray[10], counter;
for (counter = 0; counter < 5; counter++) {
numberArray[counter] = 0;
}
printf("Array elements are:\n");
for (counter = 0; counter < 5; counter++) {
printf("%d", numberArray[counter]);
}
return 0;
}
Production :
Array elements are:
00000
Utiliser la fonction de la bibliothèque C memset()
La fonction memset()
est une fonction de bibliothèque de string.h
. Elle est utilisée pour remplir un bloc de mémoire avec une valeur particulière.
La syntaxe de la fonction memset()
se trouve ci-dessous.
void *memset(void *pointerVariable, int anyValue, size_t numberOfBytes);
Où,
pointerVariable
est une variable de pointage vers le bloc de mémoire à remplir.anyValue
est la valeur à définir. C’est une valeur entière, mais la fonction remplit le bloc de mémoire en utilisant la conversion des caractères non signés de cette valeur.numberOfBytes
est le nombre d’octets à mettre à la valeur.
Cette fonction retourne un pointeur vers la zone de mémoire pointerVariable
.
Le programme complet est le suivant :
#include <stdio.h>
#include <string.h>
void printArrayvalues(int anyArray[], int anyNumber) {
int index;
for (index = 0; index < anyNumber; index++) printf("%d ", anyArray[index]);
}
int main(void) {
int number = 10;
int arrayValues[number];
memset(arrayValues, 0, number * sizeof(arrayValues[0]));
printf("Array after memset()\n");
printArrayvalues(arrayValues, number);
return 0;
}
Production :
Array after memset()
0 0 0 0 0 0 0 0 0 0
Initialiser le tableau à des valeurs autres que 0
Une initialisation d’un tableau à des valeurs autres que 0
avec gcc
est comme ci-dessous :
int myArrayValues[1024] = {[0 ... 1023] = -1};
Chaque membre d’un tableau peut être explicitement initialisé en omettant la dimension. La déclaration est comme ci-dessous :
int myArrayValues[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
Le compilateur déduira la dimension de la liste d’initialisation et pour les tableaux multidimensionnels, seule la dimension la plus extérieure peut être omise :
int myPoints[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};