typedef 별칭(Alias) 주기
반응형

typedef는 C언어의 모든 데이터 타입에 별칭을 지어줄 수 있습니다. 별칭이란 이름을 지어준다는 의미입니다. 예를 들어 unsigned long인 긴 데이터 타입 대신 ulong으로 정의하여 변수 선언을 할 수 있게 해줍니다.

typedef는 주로 구조체 정의에 사용됩니다. 구조체 변수를 선언할 때 매번 struct (구조체이름) (구조체변수); 대신 (구조체별칭) (구조체변수); 형태로 짧게 선언하여 코드의 복잡성을 단순화시킬 수 있습니다. 

typedef <데이터 타입> <별칭>
typedef unsigned long ulong;

위와 같이 선언된 후에는 ulong으로 unassigned long 변수를 정의할 수 있습니다.

ulong i, j;

typedef 구조체 사용 예제

위에서 언급한 것처럼 typedef는 구조체에 많이 사용됩니다. 기본적인 사용 방법은 아래와 같습니다.

typedef struct
{
    member1;
    member2;
    member3;
} 구조체별칭;

이렇게 구조체 별칭을 정해준 후 구조체 변수를 선언할 때는 다음과 사용하면 됩니다.

구조체별칭 t1, t2;
#include<stdio.h>
#include<string.h>
 
typedef struct employee
{
    char name[50];
    int salary;
}emp;
 
void main( )
{
    emp e1;
    printf("\nEnter Employee record:\n");
    printf("\nEmployee name:\t");
    scanf("%s", e1.name);
    printf("\nEnter Employee salary: \t");
    scanf("%d", &e1.salary);
    printf("\nstudent name is %s", e1.name);
    printf("\nroll is %d", e1.salary);
}

employee 구조체에 emp 별칭을 주어 main() 함수 내에서 구조체 변수를 emp e1;으로 선언하였습니다.

typedef 그리고 포인터

포인터 또한 typedef로 별칭을 지어줄 수 있습니다. 포인터의 개념을 숙지한 후에 사용하는 것을 추천해 드립니다.

int* x, y;

위의 예제에서 포인터 연산자인 *은 오른쪽 변수와 결합합니다. 즉, x는 포인터 변수이고 y는 int 변수란 의미입니다.

typedef int* IntPtr;
IntPtr x, y, z;

int 타입 포인터 변수를 IntPtr로 별칭을 준 후 위와 같이 한 줄에 모든 변수를 포인터 변수를 선언할 수 있습니다.

<< 다음 혼자 공부하는 C언어 이전 >>
반응형