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... */ };
?
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.
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.