Initialiser un tableau à 0 en C

Satishkumar Bharadwaj 12 octobre 2023
  1. Utiliser la fonction de la bibliothèque C memset()
  2. Initialiser le tableau à des valeurs autres que 0
Initialiser un tableau à 0 en C

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}};

Article connexe - C Array