2010-07-05 9 views

Odpowiedz

13

Musisz użyć więcej aparatów ortodontycznych (w rzeczywistości są one opcjonalne, ale GCC generuje ostrzeżenie w tych dniach). Oto przykład:

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

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

Opcjonalne tylko wtedy, gdy element członkowski 's' jest w pełni zainicjowany (tj. Wszystkie elementy), konieczne, jeśli chcesz tylko częściowo zainicjować strukturę. – Clifford

+4

W C99 możesz użyć następującej notacji, która jest łatwiejsza w utrzymaniu i przeczytaniu: 'struct s2 my_s2 = {.c = 5, .s = {.a = 6, .b = 3}};' –

0
struct A 
{ 
int n; 
} 

struct B 
{ 
A a; 
} b; 

Można zainicjować n za pomocą poniższej instrukcji. Czy tego właśnie szukasz.

b.a.n = 10; 
+2

W terminów używanych w celu określenia języka, który jest przykład * przypisania * zamiast * inicjalizacji *. W tym kontekście inicjalizator jest używany tylko przy deklaracji obiektu. – Clifford

1

zagnieżdżanie struktury

można zainicjować strukturę jeśli jedno pole w strukturze jest sama struktura

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); 
Powiązane problemy