typedef란 무엇인가?
C 언어에서는 typedef 키워드를 사용하여 새로운 자료형 이름(data type name)을 정의할 수 있습니다. 다만 typedef로 완전히 새로운 자료형을 만드는 것은 아니며, 이미 존재하는 자료형에 새로운 별칭(다른 이름)을 부여하는 기능입니다.
typedef를 활용하면 긴 자료형 선언을 간결하게 줄일 수 있고, 코드의 가독성과 유지보수성이 크게 향상됩니다.
기본 문법
typedef 자료형 새이름;
간단한 예제
typedef int bhanu; int a; bhanu a;
- 위 선언문은 컴파일러에게 'bhanu'를 'int'의 또 다른 이름으로 인식하도록 지시합니다.
- 'bhanu'를 사용하여 변수 'a'를 생성할 수 있습니다.
- 즉, 'bhanu a;'는 'a'를 'int'형 변수로 선언하는 것과 동일한 의미입니다.
실전 예제: 시간 계산 프로그램
#include <stdio.h>
int main() {
typedef int hours; // int의 별칭 hours 정의
hours h; // int h; 와 동일
printf("Enter hours: ");
scanf("%d", &h);
printf("Minutes = %d\n", h * 60);
printf("Seconds = %d\n", h * 60 * 60);
return 0;
}실행 결과
Enter hours: 1 Minutes = 60 Seconds = 3600
이 예제에서 'hours'라는 이름은 단순히 int의 별칭이지만, 코드를 읽는 사람에게 이 변수가 '시간'을 나타낸다는 의미를 명확하게 전달해 줍니다. 이처럼 typedef는 코드의 의미를 명확히 하는 데 유용하게 활용됩니다.
구조체(structure)에 typedef 적용하기
typedef는 구조체 선언에서 특히 유용합니다. 구조체를 정의할 때 typedef를 함께 사용하면, 이후 변수를 선언할 때마다 'struct 키워드'를 반복해서 작성할 필요가 없습니다.
#include <stdio.h>
typedef struct employee {
int eno; // 사원 번호
char ename[30]; // 사원 이름
float sal; // 급여
} emp; // emp라는 별칭 부여
int main() {
emp e = {10, "ramu", 5000};
printf("number = %d\n", e.eno);
printf("name = %s\n", e.ename);
printf("salary = %.0f\n", e.sal);
return 0;
}실행 결과
number = 10 name = ramu salary = 5000
정리
- typedef는 기존 자료형에 새로운 이름을 부여하는 키워드입니다.
- 새로운 자료형을 만드는 것이 아니라 기존 자료형의 별칭(alias)을 정의합니다.
- 구조체와 함께 사용하면 'struct' 키워드 없이 간결하게 변수를 선언할 수 있습니다.
- 코드의 가독성과 의미 전달력을 높이는 데 효과적입니다.