PROGRAMMING LANGUAGE/C

21강, 22강 TYPEDEF, 공용체, 열거형

JC0 2021. 9. 20. 18:00

typedef의 사용법을 알아보자.

#include <stdio.h>

typedef struct sbox
{
	int mem1;
	int mem2;
	double mem3;
}SBox;

typedef union ubox
{
	int mem1;
	int mem2;
	double mem3;
}UBox;

int main(void)
{
	SBox sbx;
	UBox ubx;
	printf("%p %p %p \n", &sbx.mem1, &sbx.mem2, &sbx.mem3);
	printf("%p %p %p \n", &ubx.mem1, &ubx.mem2, &ubx.mem3);
	printf("%d %d \n", sizeof(SBox), sizeof(UBox));
	return 0;  
}

typedef 선언으로 데이터형의 별명을 지어줄 수 있다.

 

공용체를 사용하는 방법을 보자.

#include <stdio.h>

typedef struct sbox
{
	int mem1;
	int mem2;
	double mem3;
}SBox;

typedef union ubox
{
	int mem1;
	int mem2;
	double mem3;
}UBox;

int main(void)
{
	SBox sbx;
	UBox ubx;
	printf("%p %p %p \n", &sbx.mem1, &sbx.mem2, &sbx.mem3);
	printf("%p %p %p \n", &ubx.mem1, &ubx.mem2, &ubx.mem3);
	printf("%d %d \n", sizeof(SBox), sizeof(UBox));
	return 0;  
}

구조체는 변수의 주소가 다르다. 하지만 공용체는 주소를 공유하기 떄문에 주소가 같게 나온다.

구조체의 크기는 각 변수의 데이터타입의 합이 나온다.

공용체의 크기는 가장 큰 데이터타입의 크기가 나온다.

 

 

열거형의 사용방법

#include <stdio.h>

typedef enum syllable
{
	Do = 1, Re = 2, Mi=3, Fa=4, So=5, La=6, Ti=7
}Syllable;

void Sound(Syllable sy)
{
	switch (sy)
	{
	case Do:
		puts("도는 하얀 도라지 "); return;
	case Re:
		puts("레는 둥근 레코드 "); return;
	case Mi:
		puts("미는 파란 미나리 "); return;
	case Fa:
		puts("파는 예쁜 파랑새 "); return;
	case So:
		puts("솔은 작은 솔방울 "); return;
	case La:
		puts("라는 라디오고요~ "); return;
	case Ti:
		puts("시는 졸졸 시냇물 "); return;
	}
	puts("다 함께 부르세~ 도레미파 솔라시도 솔 도~ 짠~");
}

int main(void)
{
	Syllable tone;
	for (tone = Do; tone <= Ti; tone += 1)
		Sound(tone);
	return 0;
}

열거형의 유용함은 둘 이상의 연관이 있는 이름을 상수로 선언함으로써 프로그램의 가독성을 높인다.