2010-07-05 8 views

Respuesta

13

Necesita usar más llaves (en realidad, son opcionales, pero GCC hace una advertencia en estos días). He aquí un ejemplo:

struct s1 { int a; int b; }; 
struct s2 { int c; struct s1 s; }; 

struct s2 my_s2 = { 5, { 6, 3 } }; 
+0

Opcional en donde member's' está completamente inicializado (es decir, todos los miembros), es necesario si solo desea inicializar parcialmente la estructura. – Clifford

+4

En C99 puede usar la siguiente notación que es más fácil de mantener y leer: 'struct s2 my_s2 = {.c = 5, .s = {.a = 6, .b = 3}};' –

0
struct A 
{ 
int n; 
} 

struct B 
{ 
A a; 
} b; 

Puede inicializar n con la siguiente instrucción. Es esto lo que estás buscando.

b.a.n = 10; 
+2

En los términos utilizados para definir el lenguaje, es decir un ejemplo de * asignación * en lugar de * inicialización *. En este contexto, un inicializador se usa solo en la declaración de un objeto. – Clifford

1

la jerarquización de la estructura

puede inicializar una estructura si un campo en la estructura es en sí misma una estructura

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); 
Cuestiones relacionadas