Comment initialiser une structure si un champ de la structure est lui-même une structure?Initialisation de la structure
Merci.
Comment initialiser une structure si un champ de la structure est lui-même une structure?Initialisation de la structure
Merci.
Vous devez utiliser plus d'accolades (en fait, elles sont facultatives, mais GCC fait un avertissement ces jours-ci). Voici un exemple:
struct s1 { int a; int b; };
struct s2 { int c; struct s1 s; };
struct s2 my_s2 = { 5, { 6, 3 } };
struct A
{
int n;
}
struct B
{
A a;
} b;
Vous pouvez initialiser n par l'instruction suivante. Est-ce ce que vous recherchez.
b.a.n = 10;
Dans les termes utilisés pour définir la langue, qui est un exemple de * affectation * plutôt que * initialisation *. Dans ce contexte, un initialiseur est utilisé uniquement lors de la déclaration d'un objet. – Clifford
Vous pouvez initialiser une structure si un champ dans la structure elle-même est une structure
struct add{
int house;
char road;
};
struct emp{
int phone;
struct add a;
};
struct emp e = { 123456, 23, "abc"};
printf("%d %d %c",e.phone,e.a.house,e.a.road);
Facultatif uniquement lorsque le membre 's' est entièrement initialisé (c'est-à-dire tous les membres), nécessaire si vous souhaitez initialiser seulement partiellement la structure. – Clifford
En C99 vous pouvez utiliser la notation suivante qui est plus facile à maintenir et à lire: 'struct s2 my_s2 = {.c = 5, .s = {.a = 6, .b = 3}};' –