Initialisation de tableau struct en C

Voici une partie de mon code. Je voudrais initialiser uniquement l’ arraylist[0] tant arraylist[0].x = 0 et arraylist[0].y = 0 . Je n’ai pas besoin d’initialiser le rest du tableau struct. Comment puis-je le faire? Je vous remercie.

 #include  struct example { int x; int y; }; struct example arraylist[40]; int main(int argc, char *argv[]){ printf("%d\n %d\n", arraylist[0].x, arraylist[0].y); return 0; } 

Vous pouvez initialiser n’importe quel élément du tableau struct.

Par exemple:

 struct example arraylist[40] = { [0]={0,0}}; //sets 0th element of struct struct example arraylist[40] = { [5]={0,0}}; //sets 6th element of struct 

C’est ce qu’on appelle les initialiseurs désignés, qui étaient auparavant une extension GNU avant que C99 ne l’adapte, et qui sont également pris en charge dans la norme C depuis C99.

Puisque vous parlez d’une variable dans la scope du fichier, ici, vous n’avez rien à faire, car ces variables sont toujours initialisées par 0 si vous ne fournissez pas d’initialisateur explicite.

En C, une fois que vous initialisez une partie d’un struct / tableau, vous initialisez le rest avec 0.

Cela ne devrait poser aucun problème, car vous ne devriez pas accéder en premier lieu aux variables non initialisées, et leur valeur n’est pas définie.

En C, toutes les variables statiques et externes sont initialisées à 0 sauf explicitement initialisées.