본문 바로가기
언어/C언어

Struct, Union 응용

by 코딩히어로 2022. 1. 25.
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

댓글