Maison > Article > développement back-end > Initialiseur désigné en langage C
Dans la norme C90, nous devons initialiser le tableau dans un ordre fixe, comme initialiser l'index à la position 0, 1, 2, etc. À partir de la norme C99, ils ont introduit une fonctionnalité d'initialisation désignée en C. Ici, nous pouvons initialiser des éléments dans un ordre aléatoire. L'initialisation peut être effectuée à l'aide d'index de tableau ou de membres de structure. Cette extension n'est pas implémentée dans GNU C++.
Si nous spécifions des index et entrons des valeurs, alors cela ressemblera à ceci -
int arr[6] = {[3] = 20, [5] = 40}; or int arr[6] = {[3]20, [5]40};
Cela équivaut à :
int arr[6] = {0, 0, 0, 20, 0, 40};
Nous pouvons également mettre certaines plages d'éléments en utilisant la syntaxe suivante : [premier… dernier] = valeur .
int arr[6] = {[2 … 4] = 10};
Cela équivaut à :
int arr[6] = {0, 0, 10, 10, 10, 0};
Si la taille du tableau n'est pas définie, alors la taille peut être obtenue à partir de la position d'index maximale. Jetons un coup d'œil au code pour avoir une meilleure idée.
#include <stdio.h> int main() { int Array[] = {10, 20, 30, [3 ... 9] = 100, [10] = 65, 15, [80] = 50, [42] = 400 }; int i; for (i = 0; i < 20; i++) printf("%d ", Array[i]); printf("</p><p>Array[%d] = %d</p><p>",80, Array[80]); printf("Array[%d] = %d</p><p>",42, Array[42]); printf("Size of this array: %ld</p><p>", sizeof(Array) / sizeof(Array[0])); }
10 20 30 100 100 100 100 100 100 100 65 15 0 0 0 0 0 0 0 0 Array[80] = 50 Array[42] = 400 Size of this array: 81
Cette initialisation spécifiée peut également être effectuée sur des objets de type structure ou union. Pour eux, on peut initialiser les variables en utilisant leurs noms dans n'importe quel ordre suivi d'un point (.) au début. Pour avoir une idée claire, vérifiez le code ci-dessous.
#include <stdio.h> struct myStruct { int x; float y; char z; }; int main() { struct myStruct str1 = {.y = 2.324, .z = 'f', .x = 78}; struct myStruct str2 = {.z = 'r'}; printf ("x = %d, y = %f, z = %c</p><p>", str1.x, str1.y, str1.z); printf ("z = %c</p><p>", str2.z); }
x = 78, y = 2.324000, z = f z = r
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!