Maison  >  Article  >  développement back-end  >  Initialiseur désigné en langage C

Initialiseur désigné en langage C

王林
王林avant
2023-09-01 08:49:06858parcourir

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.

Exemple de code

#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]));
}

Output

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.

Exemple de code

#include <stdio.h>
struct myStruct {
   int x;
   float y;
   char z;
};
int main() {
   struct myStruct str1 = {.y = 2.324, .z = &#39;f&#39;, .x = 78};
   struct myStruct str2 = {.z = &#39;r&#39;};
   printf ("x = %d, y = %f, z = %c</p><p>", str1.x, str1.y, str1.z);
   printf ("z = %c</p><p>", str2.z);
}

Sortie

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer