web-dev-qa-db-fra.com

Comment initialiser un tableau à 0 en C?

J'ai besoin d'un grand tableau null en C en tant que global. Y a-t-il un moyen de le faire en plus de taper

char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };

?

139
Claudiu

Les variables globales et les variables statiques sont automatiquement initialisées à zéro. Si vous avez simplement

char ZEROARRAY[1024];

à l'échelle mondiale, il n'y aura que des zéros au moment de l'exécution. Mais en réalité existe une syntaxe abrégée si vous aviez un tableau local. Si un tableau est partiellement initialisé, les éléments non initialisés reçoivent la valeur 0 du type approprié. Vous pourriez écrire:

char ZEROARRAY[1024] = {0};

Le compilateur remplira les entrées non écrites avec des zéros. Vous pouvez également utiliser memset pour initialiser le tableau au démarrage du programme:

memset(ZEROARRAY, 0, 1024);

Ce serait utile si vous l'aviez changé et que vous vouliez le réinitialiser à tous les zéros.

240
John Kugelman

Si vous souhaitez initialiser le tableau avec des valeurs autres que 0, avec gcc vous pouvez faire:

int array[1024] = { [ 0 ... 1023 ] = -1 };

Il s’agit d’une extension GNU de C99 initialiseurs désignés . Dans les anciens GCC, vous devrez peut-être utiliser -std=gnu99 pour compiler votre code.

29
Deqing