Search
Duplicate

typedef

Created
2021/11/18 08:53
Tags
역할
C 언어에서 정의된 기존 형식(int, char, ...) 이나 사용자 정의 형식(struct)을 보다 짧게 또는 의미있는 형식으로 재정의 한 것
형식
typedef // 기존 데이터형 새로운 데이터형; typedef int INT; typedef unsigned int UNIT; typedef struct_POINT POINT;
C
복사
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; }
C
복사
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; }
C
복사

구조체 사용 예

일반 변수로 사용하는 형태
#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; }
C
복사
포인터 변수로 사용하는 형태
// 포인터 변수로 사용하는 형태 #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; }
C
복사
포인터로 사용시에 배열로 사용사는게 더 가독성이 좋다고 생각하고 배열형태로 사용하는걸 권장한다.
함수의 매개변수로 사용하는 형태
// 함수의 매개변수로 사용하는 형태 #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; }
C
복사