2012-03-20 3 views
0

구조체는 다음과 같습니다나는이 중첩 된 구조체를 이해하지 못하는

struct 
{  
    int x; 
    struct 
    { 
     int y, z; 
    } nested; 
} 
i={.nested.y = 5, 6, .x = 1, 2}; 

질문 : 결과는 i.nested.y = 2; i.nested.z = 6;

나는 이것을 이해할 수 없다. 내면은 구조체이지만 노동 조합이므로, 누구도 나를 도울 수 있을까?

+0

가능한 복제본 [C 구조체 초기화] (http://stackoverflow.com/questions/17464822/c-structure-initialization) – alk

답변

0

좋아, 우선 이것은 구조체를 초기화하는 끔찍한 방법이며 숙제 문제인 경우 아주 좋지 않습니다.
그러나 손에 문제가 주어진다면 초기화에서 일어나는 일은 다음과 같습니다. 먼저 y가 5로 초기화되고 z가 구조체의 다음 멤버가되고 z가 6으로 초기화됩니다. 그런 다음 x가 초기화됩니다. 1로 설정하고 구조체의 다음 멤버 인이 경우 y는 2로 초기화됩니다 (이 값은 5를 덮어 씁니다).

중요한 점은 중첩 된 구조체는 공용체가 아니라 구조체입니다. 즉, 코드에서 말하는 것이기 때문에, 또한 그것이 유니온이라면 불가능하기 때문입니다 이 경우 y와 z는 서로 다른 값을 가지므로 둘 다 메모리의 동일한 위치에 유지됩니다.

+0

예, 맞습니다. 알아 냈습니다. – kevinwei

관련 문제