Dites que je veux initialiser myArray
char myArray[MAX] = {0};
char myArray[MAX] = {0,};
char myArray[MAX]; memset(myArray, 0, MAX);
Sont-ils tous égaux ou privilégiés par rapport à un autre?
Je vous remercie
Elles sont équivalentes en ce qui concerne le code généré (du moins dans les versions optimisées) car lorsqu'un tableau est initialisé avec la syntaxe {0}
, toutes les valeurs non spécifiées explicitement sont initialisées implicitement avec 0 et le compilateur en sait suffisamment pour insérer un appel à memset
.
La seule différence est donc stylistique. Le choix dépendra de la norme de codage que vous utilisez ou de vos préférences personnelles.
En fait, je recommande personnellement:
char myArray[MAX] = {};
Ils font tous la même chose, mais j'aime mieux celui-ci; c'est le plus succinct. = D
Au fait, notez que char myArray[MAX] = {1};
fait pas initialise toutes les valeurs à 1! Il initialise uniquement la première valeur à 1 et le reste à zéro. Pour cette raison, je vous recommande de ne pas écrire char myArray[MAX] = {0};
car c'est un peu trompeur pour certaines personnes, même si cela fonctionne correctement.
Je pense que la première solution est la meilleure.
char myArray[MAX] = {0}; //best of all
Soit peut être utilisé
Mais je pense que le texte ci-dessous est plus compréhensible et lisible.
char myArray[MAX];
memset(myArray, 0, MAX);
En supposant que vous vouliez toujours initialiser avec 0.
-> Votre premier et deuxième chemin sont les mêmes. Je préfère 1er.
-> La troisième manière de memset()
doit être utilisée lorsque vous souhaitez affecter des 0 autres que l’initialisation.
-> Si ce tableau ne doit être initialisé qu'une seule fois, vous pouvez alors placer le mot clé static
devant lui afin que le compilateur fasse le travail à votre place (pas de temps système).
Vous pouvez également utiliser bzero fn (écrire des octets de valeur zéro)
#include <strings.h>
void bzero(void *s, size_t n)