C언어 typedef - 자료형에 새 이름 붙이기
선수학습(1개)
요약
C언어 typedef 키워드로 자료형에 별칭을 붙이는 방법을 배웁니다. struct와 함께 쓰는 패턴, 자기 참조 구조체, 포인터 타입 별칭까지 시험에 자주 출제되는 typedef 활용법을 정리합니다.
typedef 핵심 정리
아래에서 하나씩 배울 내용을 미리 정리한 표입니다.
| 개념 | 설명 | 예시 |
|---|---|---|
| typedef | 자료형에 새 이름(별칭)을 붙이는 키워드 | typedef int INT; |
| 사용 목적 | 긴 타입명을 짧게, 코드 가독성 향상 | Queue q; |
| struct와 함께 | struct 키워드 생략 가능 | typedef struct {...} Name; |
| 자기 참조 구조체 | 구조체 내부에서 자신을 가리킬 때 struct 필수 | struct Node *next; |
| 포인터 별칭 | 포인터 타입에도 별칭 가능, 선언 함정 주의 | typedef int* IntPtr; |
typedef란? 쌩기초
typedef는 type definition의 약자로, 기존 자료형에 **새로운 이름(별칭)**을 붙이는 키워드입니다.
기본 예시
struct와 함께 사용 기초
typedef가 가장 많이 쓰이는 곳은 구조체와 함께 사용할 때입니다. 구조체를 아직 배우지 않았다면, 구조체 페이지를 먼저 읽고 오는 것을 추천합니다.
typedef 없이 struct 사용
typedef와 함께 struct 사용
| 방식 | 변수 선언 | 특징 |
|---|---|---|
| typedef 없이 | struct Queue q; | 매번 struct 키워드 필요 |
| typedef 사용 | Queue q; | 간결하고 가독성 좋음 |
typedef struct 패턴 기초
시험 기출에서 가장 자주 등장하는 패턴입니다.
패턴 1: 익명 구조체 + typedef
구조체 이름 없이 바로 별칭만 지정합니다. 가장 간결한 방식입니다.
패턴 2: 이름 있는 구조체 + typedef
연결 리스트처럼 자기 자신을 참조하는 구조체는 내부에서 struct Node를 써야 합니다. typedef 별칭 Node는 구조체 정의가 완료된 후에야 사용할 수 있기 때문입니다.

왜 struct Node를 써야 하는지 잘못된 코드로 확인해 보겠습니다.
포인터 타입에 typedef 심화
포인터 타입에도 별칭을 붙일 수 있습니다. 포인터가 처음이라면 포인터 페이지를 먼저 읽어보세요.
주의: 일반 선언과의 차이
int *p1, p2;에서 *는 자료형이 아니라 변수 이름 p1 앞에만 붙는 기호입니다. 그래서 p2에는 *가 적용되지 않아 일반 int 변수가 됩니다. 두 변수를 모두 포인터로 선언하려면 int *p1, *p2;처럼 각각 *를 붙여야 합니다.
| 선언 방식 | p1 타입 | p2 타입 |
|---|---|---|
IntPtr p1, p2; | int* | int* |
int *p1, p2; | int* | int |
언제 typedef를 사용하나? 기초
| 상황 | 예시 |
|---|---|
| struct 간결하게 | typedef struct {...} Queue; |
| 긴 타입명 줄이기 | typedef unsigned long long ULL; |
| 의미 부여 | typedef int Age; (나이를 저장하는 int) |
| 이식성 1 | typedef int int32_t; |
구조체를 사용하는 코드에서는 typedef가 거의 필수적으로 쓰입니다. 시험에서도 typedef struct 패턴이 매우 자주 출제되니 익숙해지세요.
정보처리기사 실기 대비 문제
Footnotes
-
이식성이란 코드를 다른 컴퓨터나 운영체제에서도 동일하게 동작하도록 만드는 것을 말합니다. 예를 들어
int의 크기가 컴퓨터마다 다를 수 있는데,typedef로int32_t를 정의해두면 항상 32비트 정수임을 보장할 수 있습니다. ↩