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;
}
열거형의 유용함은 둘 이상의 연관이 있는 이름을 상수로 선언함으로써 프로그램의 가독성을 높인다.