728x90
C언어에서 Struct는 구조화된 변수를 정의해놓고 사용할 때 많이 사용됩니다.
대게는 Struct 사용만으로도 충분히 프로그램이 깔끔하게 보일 수 있지만
한발 더 나아가서 편리한 Union과의 응용방법에 대해 정리하도록 하겠습니다.
먼저 Struct에 int형 변수가 두 개 있다고 가정하도록 하겠습니다.
Struct{
int8 testA;
int8 testB;
} test_data;
프로그램 실행 중 testA와 testB를 각각 필요로 하는 순간에는 test_data라는
구조체를 통해 접근이 가능합니다.
test_data.testA;
test_data.testB;
여기에서 사용자는 int16형의 변수에 A와 B를 합치고 싶다고 가정하면
다음과 같이 복잡하게 수식을 써서 합쳐주어야 합니다.
int16 testC;
testC = testA;
testC <<= 8;
testC |= testB;
매번 이런식으로 추출하는 것은 비효율적이기 때문에 우리는 여기서
Union을 통해서 구조자체를 편리하게 잡고 사용할 수 있습니다.
typedef union{
int16 testC;
struct{
int8 testA;
int8 testB;
} test_data;
} test_type16;
위와 같은 구조로 Union을 만들어 주면 struct인 test_data가 testC와 int16만큼을
공유하기 때문에 아래와 같이 단순하게 사용할 수 있습니다.
int16 testD;
testD = test_type16.testC;
수식을 사용하지 않고 int16 값으로 union을 통해 struct내의 testA, B를 사용할 수 있습니다.
반대로 testA와 testB에 각각 int8값을 넣어준다고 하면 아래와 같은 구조가 됩니다.
test_type16.test_data.testA = 1;
test_type16.test_data.testB = 2;
728x90
반응형
'언어 > C언어' 카테고리의 다른 글
json-c 라이브러리 사용 방법 (6) | 2022.05.16 |
---|---|
메모리 초기화 memset 함수 (8) | 2022.02.07 |
switch문 다중처리 (4) | 2022.01.11 |
문자열 파싱 strtok (1) | 2022.01.05 |
Log파일 기록 (0) | 2021.12.30 |
댓글