C언어

typedef 문법

hoho0311 2024. 10. 10. 12:33

typedef 문법

type define의 줄임말이며, 기존의 자료형 중에 자료형 이름의 길이가 긴 경우 프로그래머가 짧고 간결하게자료형을 재정의 하는 문법이다.

typedef unsigned short int US; // unsugned short int를 US로 선언함.
US temp;    // unsigned short int temp; 와 같은 뜻
#include <stdio.h>

typedef unsigned short int US;

int main()
{
    unsigned short int data = 5;
    US temp;    // unsigned short int temp; 와 같은 의미임 

    temp = data;
    printf("temp = %d\\n", temp);
}
// temp = 5

typedef 장점

1. 복잡해 보이는 문법을 쉽게 표현이 가능함

typedef int MY_DATA[5];
MY_DATA temp;  // int temp[5]라고 선언한 것과 같음

--------------------------------------------------------------------------------

typedef int MY_DATA[5];
MY_DATA *p;  // int (*p)[5]; 라고 선언한 것과 같음

💡

MY_DATA가 int[5]로 치환한 것을 어떻게 알 수 있나?

요즘엔 개발 도구가 발전하여 마우스를 올려놓으면 원래 값이 나타난다.

그리고 재정의 할때 이름을 모두 대문자로하여 구분하기 쉽게 작성한다.

즉, 자료형이 모두 대문자이면 ‘ 누군가 재정의한 자료형이구나’ 라고 생각한다.

 

2. 자료형의 크기를 쉽게 바꿀 수 있다.

// typedef 문법을 사용 안할 때
#include <stdio.h>

//나이를 출력하는 함수
void ShowAge(char age) {...}
//해당 나이인 사람의 수를 반환하는 함수
int FindAge(char age) {...}
void main()
{
	char age;
	Show(age);
	Findage(10);
}
//typedf 문법을 사용 할 떄
#include <stdio.h>
typedef char AGE;

//나이를 출력하는 함수
void ShowAge(AGE) {...}
//해당 나이인 사람의 수를 반환하는 함수
int FindAge(AGE) {...}
void main()
{
	AGE age;  // char age; 와 같음
	ShowAge(AGE);
	FindAge(10);
}
typedef char AGE; -> typedef short int age;
AGE age; // short int age; 라고 선언한 것과 같음.

세번째 코드와 같이 어느 한 변수의 데이터 타입을 변경시 typedef 문법을 사용하지 않았더라면 코드 내에 있는 모든 age 변수를 뒤쳐 하나하나 변경해야했다.

하지만 typedef 문법을 사용하여 같단하게 자료형 변경이 가능하다.