C++ 관련 질문입니다
글쓴이: 토스님@Google / 작성시간: 금, 2020/10/16 - 8:12오후
#include<iostream> struct Vector2 { int x, y; }; struct Vector4 { public: union { struct { int x, y, z, w; }; struct { Vector2 a, b; //부분 (가) }; }; }; void PrintVector(const Vector2& vector) { std::cout << vector.x << ", " << vector.y << std::endl; } int main() { Vector4 vector4 = { 1,2,3,4 }; PrintVector(vector4.a); PrintVector(vector4.b); vector4.x = 50; PrintVector(vector4.a); PrintVector(vector4.b); std::cin.get(); }
이 코드에서 Vector4 의 union 안에 있는 a를 출력하면 x,y 의 값을 출력하고 b를 출력하면 z,w의 값을 출력합니다. 부분 (가)
의 a 는 Vector2::x 이고, 부분 (가)
의 b 는 Vector2::y 인가요?왜 a에 두가지의 값(x,y)이 있는건가요? 한개만 들어가야 정상 아닌가요?
Forums:
자료형이 전부 int이므로 그냥 '칸'이라는 단어로
자료형이 전부 int이므로 그냥 '칸'이라는 단어로 퉁쳐서 생각해 보죠.
vector4는 4칸짜리 구조체이고,
vector2는 2칸짜리 구조체입니다.
vector4안에 2칸짜리 구조체 2개 (a, b)가 union이므로 a는 두 칸이죠. 그러니까 x,y 죠. 당연히 b는 z, w 인거고요.
구조체의 인스턴스가 메모리에 어떻게 잡히는지를 그림으로 그려보면 이해가 될겁니다.
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
댓글 달기