Initialiser un tableau 2D au moment de la déclaration dans le langage de programmation C

Comment initialiser un tableau 2D avec des 0 lorsque je le déclare?

double myArray[3][12] = ?

 double myArray[3][12] = {0}; 

ou, si vous voulez éviter l’avertissement de gcc “Accolades manquantes autour de l’initialiseur” (l’avertissement apparaît avec -Wall ou, plus précisément, -Wmissing-braces )

 double myArray[3][12] = {{0}}; 

Si vous souhaitez initialiser avec des zéros, procédez comme suit:

 double myArray[3][12] = { 0 }; 

Si vous souhaitez renseigner les valeurs réelles, vous pouvez imbriquer les accolades:

 double myArray[3][3] = { { 0.1, 0.2, 0.3 }, { 1.1, 1.2, 1.3 }, { 2.1, 2.2, 2.3 } }; 

La méthode de pmg est correcte, cependant, notez que

 double myArray[3][12] = {{}}; 

donnera le même résultat.

De plus, gardez à l’esprit que

 double myArray[3][12] = {{some_number}}; 

ne fonctionnera comme prévu que lorsque nombre_noix est égal à zéro.

Par exemple, si je devais dire

 double myArray[2][3] = {{3.1}}; 

le tableau ne serait pas plein de 3.1, au lieu de cela il sera

 3.1 0.0 0.0 0.0 0.0 0.0 

(le premier élément est le seul défini à la valeur spécifiée, les autres sont mis à zéro)

Cette question (c initialisation d’un tableau normal avec une valeur par défaut) a plus d’informations

@JSB ձոգչ a proposé la syntaxe d’initialisation avec les valeurs réelles, ce qui correspond parfaitement au titre de la question, ce qui m’a amené ici (je m’intéressais à l’ordre des index).

 myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } }; 

Le premier index est l’index de ligne est l’index le plus lent. C’est ce qu’on appelle l’ordre C par opposition à l’ordre F (Fortran).

je pense que ce sera

 double myArray[3][12] = {0} 

Vous pouvez utiliser

 double myArray[3][12] = { 0 }; 

ou

 double myArray[3][12]; memset(myArray, 0, sizeof(double) * 3 * 12); 

La méthode de pmg fonctionne mieux car elle fonctionne sur le concept que si vous initialisez partiellement un tableau, le rest d’entre eux obtient la valeur par défaut de zéro. sinon, vous pouvez déclarer le tableau en tant que variable globale et s’ils ne sont pas initialisés, les éléments du tableau seront automatiquement réglés sur la valeur par défaut (selon les compilateurs), zéro.