C++/Tips

[C++] Union

메리사츠 2021. 6. 18. 18:30

1. Union

=> Union은 공용체라고 불리며, 구조체와 대부분 동일

=> 모든 멤버 변수가 구조체와는 다르게 하나의 메모리 공간을 공유

union vars
{
	char a; // 1byte
	int b; // 4byte
}; // 총 크기는 4byte

=> 순서가 Struct처럼 규칙적이지 않고, 다양한 Data를 저장할 수 있도록 설계

=> 크기가 가장 큰 멤버 변수의 크기로 메모리 할당

=> 단점으로썬, 한번에 하나씩 쓰면 괜찮으나, 여러개를 한번에 사용하면 나머지 값은 사용할 수 없음

#include<iostream>
using namespace std;

union vars
{
	char a;
	int b;
	long c;
};

int main()
{
	vars var;
	var.a = 'c';
	var.b = 91;
	cout << var.a << endl; // [ (ASCII 91번) 출력 (더 큰 값인 int에 덮어씌워짐
	cout << var.b << endl; // 91 출력
	return 0;
}

 

댓글수0