C언어 사용자정의 자료형 typedef

    2019-05-09 16:54:59 작성

    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와 함수 포인터

    함수포인터의 이름도 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는 복잡한 자료형을 간단히 표현하는데 쓰이며 이제 배우게될 구조체에서 많이 쓰이게 될 것입니다.