Comment déclarer et initialiser dans un tableau à 4 dimensions en C

Je suis relativement nouveau en programmation et je dois entrer dans un tableau à 4 dimensions, et je peux à peine comprendre. Commençons donc par un simple tableau à 3 dimensions, composé de 2 éléments, comme suit:

int arr[2][2][2] = { { {1, 2} {3, 4} //redline on "{" } { //redline on "{" {5, 6} {7, 8} } }; 

VS-2012 redéfinit le “{” avant le “3” et indique qu’il attend un “}” à la place. Comment pourrais-je entrer dans le tableau dans un format net? Avoir 4 dimensions rendra les choses plus compliquées, et j’ai besoin de pouvoir voir les données clairement.

De plus, je vais avoir un bon nombre de zéros dans mon tableau, en substance, chaque arr [n] [n] sera 0, alors je me demande si je peux simplifier l’initialisation.

mon tableau sera du type

 int arr[7][7][15][2] 

Ou suis-je mieux d’utiliser struct à la place?

Merci d’avance!

Il te manque un.

Pour un tableau en trois dimensions

  int arr[2][3][4] = { { {1, 2, 1, 2}, {1, 2, 1, 4}, {1, 2, 4, 4} }, { {1, 1, 2, 4}, {1, 2, 1, 4}, {1, 2, 1, 4} } }; or int arr[2][3][4] = {1,2,1,2,1,2,1,4,1,2,4,4,1,1,2,4,1,2,1,4,1,2,1,4}; 

Pour un tableau à quatre dimensions

 int arr[2][3][4][2] = { { { {1,2},{1,2},{1,2},{4,2} }, { {2, 4},{1, 4},{1, 4},{1,2} }, { {2, 4},{1, 4},{1, 4},{1,8} } }, { { {1,2},{1,2},{1,2},{4,2} }, { {2, 4},{1, 4},{1, 4},{1,2} }, { {2, 4},{1, 4},{1, 4},{1,2} } } }; 

Chaque élément entre crochets peut être vu comme l’un des int intérieur de { 1, 2 } par exemple. Initialiser avec une liste indique que des éléments séparés sont énumérés avec des virgules. La syntaxe correcte sera donc avec des virgules après chaque tableau entre crochets ( { { 1, 2 }, { 3, 4 } } ):

 int arr[2][2][2] = { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }; 

Pour un tableau à quatre dimensions, vous devez écrire beaucoup de code de «codage dur»; vous ferez probablement mieux d’écrire une fonction qui la remplira de valeurs pour vous.

À l’intérieur des accolades extérieures, les accolades intérieures { } désignent les lignes de la masortingce. Mais quelles sont les virgules requirejses? Et quelles virgules sont facultatives?

En C 1999, initialisations de déclaration de tableau à deux dimensions:

  1. Les accolades internes indiquent les lignes de la masortingce.

  2. Une virgule doit apparaître entre chacune des deux valeurs d’initialisation d’éléments de masortingce adjacentes (même si elles sont séparées par une nouvelle ligne).

  3. Une virgule doit apparaître entre des paires adjacentes d’accolades intérieures; toutefois, cette virgule peut être facultative dans certains compilateurs standard (?).

  4. Une virgule à la fin du dernier élément de chaque ligne est facultative (si vous utilisez des accolades internes).

  5. Une virgule finale après la dernière accolade est optionnelle.

  6. Un point-virgule à la fin du dernier support externe est requirejs.

(Les experts de la norme C 1999 pourraient-ils modifier la liste ci-dessus pour corriger toute fausse déclaration?)

N’oubliez pas que C utilise toujours l’ ordre majeur des lignes pour l’allocation de mémoire pour les tableaux statiquement déclarés. Par exemple :

  • Dans le cas d’un tableau à deux dimensions, dites int A[3][2] l’allocation de mémoire commence à partir du premier élément, c’est-à-dire A[0][0] puis A[0][1] après cela passe à la ligne suivante, mais l’allocation de mémoire serait contiguë, donc l’élément suivant dans l’ordre de la disposition de la mémoire serait A[1][0] puis A[1][1] -> A[2][0] -> A[2][1] .
  • Par conséquent, la manière la plus simple dans votre cas d’initialisation serait de la visualiser linéairement sous la forme 1-D et de l’écrire.

int arr[2][3][4] = {1,2,1,2,1,2,1,4,1,2,4,4,1,1,2,4,1,2,1,4,1,2,1,4};

Une représentation d’un tableau à quatre dimensions

 int arr[2][2][2][2] = { { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }, { { {9,10}, {11, 12} }, { {13, 14}, {15, 16} } } };