typedef 선언는 기존자료형의 이름에 새이름을 부여하는것 입니다.
typedef는 프로그래머가 기존의 자료형을 자신이 만든 이름으로 바꿀수 있으며,
복잡한 자료형의 이름을 간단한 이름으로 바꾸어 사용할 수 있습니다.
다음과 같은 형식으로 사용합니다.
typedef 기존 자료형 새로운자료형;
다음은 unsigned int 자료형을 간단히 UINT로 명명할수 있습니다.
typedef unsigned int UINT;
typedef는 마지막에 등장하는 단어가 새로운 이름이 됩니다.
#include <stdio.h>
typedef unsigned int UINT;
typedef UINT * PUINT;
int main(void) {
UINT num = 10; // unsigned int = 10
PUINT ptr = &num // unsigned int * ptr = &num
*ptr = 20;
printf("num = %d\n", num);
printf("*ptr = %d\n", *ptr);
}
위의 예제처럼 먼저 선언된 UINT를 이용해 PUINT를 선언한것 처럼 사용할 수 있습니다.
함수포인터의 이름도 typedef를 이용하면 간단히 표현할 수 있고 자료형처럼 사용할 수 있습니다.
#include <stdio.h>
typedef int Calculate(int, int); // typedef로 함수 자료형 선언
int sum(int, int);
int sub(int, int);
int calculate(Calculate cal); // 함수포인터를 자료형처럼 사용
int main(void) {
int choice, result;
printf("1. 덧셈, 2. 뺄셈 : ");
scanf("%d", &choice);
switch (choice)
{
case 1:
result = calculate(sum);
printf("덧셈 ");
break;
case 2:
result = calculate(sub);
printf("뺄셈 ");
}
printf("결과 : %d\n", result);
return 0;
}
int sum(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int calculate(Calculate cal) { // 함수포인터를 자료형처럼 사용
int num1, num2;
printf("두개의 정수 입력 : ");
scanf("%d %d", &num1, &num2);
return cal(num1, num2);
}
이렇게 typedef는 복잡한 자료형을 간단히 표현하는데 쓰이며 이제 배우게될 구조체에서 많이 쓰이게 될 것입니다.