역할
C 언어에서 정의된 기존 형식(int, char, ...) 이나 사용자 정의 형식(struct)을 보다 짧게 또는 의미있는 형식으로 재정의 한 것
형식
typedef // 기존 데이터형 새로운 데이터형;
typedef int INT;
typedef unsigned int UNIT;
typedef struct_POINT POINT;
typedef 사용예(1) : 기존 데이터형
#include <stdio.h>
#include <stdlib.h>
typedef int INT;
typedef unsigned int UINT;
int main(void){
INT var1 = -7;
UINT var2 = 12;
printf("%d %d\\n", var1, var2);
return 0;
}
typedef 사용예(2) : 사용자 정의 데이터형(1)
#include <stdio.h>
#include <stdlib.h>
typedef struct _POINT{
int x;
int y;
} POINT;
int main(void){
POINT Test;
Test.x = 10;
Test.y = 20;
printf("%d %d\\n", Test.x, Test.y);
return 0;
}
일반 변수로 사용하는 형태
#include <stdio.h>
#include <stdlib.h>
typedef struct _POINTP{
int x;
int y;
} POINT;
int main(void){
POINT point1;
point1.x = 10;
point1.y = 20;
printf("%d %d %ld\\n", point1.x, point1.y, sizeof(point1));
return 0;
}
포인터 변수로 사용하는 형태
// 포인터 변수로 사용하는 형태
#include <stdio.h>
#include <stdlib.h>
typedef struct _POINTP{
int x;
int y;
} POINT;
int main(void){
POINT point1, *ppoint;
point1.x = 10;
point1.y = 20;
ppoint = &point1;
printf("%d %d %ld\\n", ppoint -> x, ppoint -> y, sizeof(ppoint));
ppoint = (POINT*)malloc(sizeof(POINT)*2);
ppoint[0].x = 10;
ppoint[0].y = 20;
ppoint[1].x = 100;
ppoint[1].y = 200;
printf("%d %d %d %d\\n", ppoint[0].x, ppoint[0].y, ppoint[1].x, ppoint[1].y);
free(ppoint);
return 0;
}
함수의 매개변수로 사용하는 형태
// 함수의 매개변수로 사용하는 형태
#include <stdio.h>
#include <stdlib.h>
typedef struct _POINT{
int x;
int y;
} POINT;
void func1(POINT spoint){
printf("%d %d\\n", spoint.x, spoint.y);
}
void func2(POINT *ppoint){
ppoint->x += 1;
ppoint->y += 1;
}
void func3(POINT pointarray[], int count){
int i;
for(i = 0; i < count; i++){
++pointarray[i].x;
++pointarray[i].y;
}
}
int main(void){
int i;
POINT spoint = {10, 20};
POINT spointarray[] = {{10, 20}, {30, 40}};
func1(spoint);
func2(&spoint);
printf("%d %d\\n", spoint.x, spoint.y);
func3(spointarray, 2);
for(i = 0; i < 2; i++){
printf("%d %d ", spointarray[i].x, spointarray[i].y);
}
putchar('\\n');
return 0;
}