[C++] union (공용체)PROGRAMMING/04. C++2024. 4. 25. 13:03
Table of Contents
반응형
union (공용체)
서로 다른 데이터형을 한 번에 한 가지만 보관할 수 있는 데이터 형식
(구조체는 int형과 double형을 한꺼번에 보관할 수 있지만, 공용체는 int형이나 double형 중에서 한 번에 어느 하나만 보관할 수 있음)
구조체(struct)와 거의 동일하지만 모든 멤버 변수가 하나의 메모리 공간을 공유한다는 점이 다르다.
즉, 공용체(union)는 내부에 여러가지 타입의 멤버 변수를 선언하지만 실제 사용할 때에는 하나의 멤버 변수만 사용할 수 있다.
특징
- 한 번에 하나의 값만 보관할 수 있으므로, 가장 큰 멤버를 보관할 수 있을 만큼의 공간이 필요하다. (따라서 공용체의 크기는 가장 큰 멤버의 크기가 됨)
- 멤버 변수끼리 같은 메모리 공간을 공유하기 때문에 각 멤버들의 메모리 시작 주소가 동일하다. (따라서, 각 멤버 변수의 변화가 다른 멤버 변수에 영향을 끼침 / struct는 멤버 변수가 각각 다른 메모리 공간을 할당받음)
- 메모리 절약을 위해서 사용한다. (여러가지 데이터형을 사용할 수 있지만 이들을 동시에 사용할 수 없을 때)
사용법
1
2
3
|
union 공용체이름 {
멤버들
};
|
cs |
1
2
3
4
5
6
|
union Data
{
int u_int;
float u_float;
char u_string[4];
};
|
cs |
📝 Struct(구조체) + Union(공용체) 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <stdio.h>
#include <windows.h>
struct Matrix
{
union // 공용체
{
struct
{
float _11, _12, _13, _14;
float _21, _22, _23, _24;
float _31, _32, _33, _34;
float _41, _42, _43, _44;
};
float m[4][4];
};
};
int main()
{
Matrix matrix;
matrix._11 = 1.0f; // 아래와 같은 코드
matrix.m[0][0] = 1.0f; // 위와 같은 코드
printf("matrix._11 = %f\n", matrix._11);
printf("matrix.m[0][0] = %f", matrix.m[0][0]);
return 0;
}
|
cs |
출처 및 참고: 강의 짱잘하시는 울 유니티 선생님 수업
반응형
@HYUNJZZANG :: HyunZzang
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)