[C++] union 공용체

jh Seo·2022년 11월 29일
0

C++공부

목록 보기
3/21
post-custom-banner

개요

directx 12를 이용한 3d 게임 프로그래밍 입문 책을 공부하던 중
xmvectorf32 구조체의 구조에서 union을 보고 잘 모르겠어서 정리했다.

typedef _DECLSPEC_ALIGN_16_ struct XMVECTORF32 {
	union {
		float f[4];
		XMVECTOR v;
	};

Union(공용체)

공용체는 구조체와 유사하다.
차이점은 공용체의 멤버 변수들은 같은 메모리를 공유한다.
공용체는 제일 큰 멤버 변수의 사이즈로 메모리가 할당되며,
같은 메모리를 공유하기 때문에 한 번에 하나의 멤버 변수만 사용이 가능하다.

#include<iostream>

using namespace std;

union A
{
	int b;
	int c;
}a;	

int main() {
	a.b = 10;
	cout << a.c<<'\n';
}

공용체 A를 선언하고 int형 변수 b에 10을 넣어주었다.
여기서 c를 출력하는데, 구조체의 경우 초기화하지 않아서 쓰레기값이 나올 것이다.
하지만 공용체에서 c를 출력하면 공용체안에 int형 값인 10이 들어있어서
그대로 10이 출력된다.

profile
코딩 창고!
post-custom-banner

0개의 댓글