non, la forme zoneArrosee [RELAY_NUMBER_A] = { 0 };n'est possible qu'à la déclaration du tableau, si vous voulez dire par là initialiser toutes les valeurs du tableau.
il faut passer par la boucle for ou alors comme c'est 0 que vous voulez (donc mettre tous les octets à 0) vous pourriez utiliser memset() (qui va faire la boucle pour vous)
cependant un statement composé (entre accolades) a comme évaluation l'évaluation de se dernière opération. donc {0} ça vaut 0, donc c'est comme faire zoneArrosee [RELAY_NUMBER_A] = 0;on affecte qu'une seule position, celle de RELAY_NUMBER_A (qui sans doute est la dimension du tableau et donc c'est un débordement mémoire)
n'initialise pas tout le tableau mais seulement le premier élément du tableau.
non ce n'est pas nécessaire. vous aurez bien des 0 partout même si c'est une variable locale.
Essayez cela
void setup() {
int tab1[3] = {0};
int tab2[3];
Serial.begin(115200);
for (int i = 0; i < 3; i++) Serial.println(tab1[i]);
Serial.println();
for (int i = 0; i < 3; i++) Serial.println(tab2[i]);
}
void loop() {}
le premier tableau a bien été mis à 0 mais le second n'a pas été initialisé et on voit donc ce qui trainait sur la pile à ce moment
si vous mettez autre Chose que 0, seul le premier élément prend cette valeur et les autres sont mis à 0, par exemple
void setup() {
int tab1[3] = {17};
int tab2[3];
Serial.begin(115200);
for (int i = 0; i < 3; i++) Serial.println(tab1[i]);
Serial.println();
for (int i = 0; i < 3; i++) Serial.println(tab2[i]);
}
void loop() {}
Si la valeur avec laquelle vous souhaitez initialiser les éléments du tableau est 0, alors il existe une notation raccourcie qui fonctionne quelle que soit la taille du tableau mais uniquement avec la valeur 0 :
int monTableau[1000] = { 0 } //Les 1000 éléments du tableau sont initialisés avec la valeur 0
Si le compilateur que vous utilisez pour votre programme est GCC, une notation permet d'initialiser tous les éléments d'un tableau avec la valeur de son choix :
int monTableau[1000] = {[0 ... 999] = 5};
d ' ou ma question de depart , je pensais qu ' il etait possible qu ' un raccourci ( pour replacer toutes les valeurs a 0 ) de la sorte pouvait exister aussi au vu de cette initialisation raccourcie de tableau .
kamill:
Quand on met une valeur différente de 0, seul le premier élément prend cette valeur, je n'avais pas vu que les autres éléments étaient mis à 0.
oui c'est quand même un ordre d'initialisation et la valeur par défaut c'est 0 sauf si on dit autre chose
Dans le standard on peut même définir que certaines valeurs du tableau par exemple