typedef
typedef는 C, C++의 예약어이며 저장소 클래스 지정자 중 하나이다. 구조체(struct)와 union 타입으로 이루어진 복잡한 자료구조를 선언하는 문을 단순하게 만들기 위해 종종 사용되지만, 다양한 길이의 정수 자료형에 대한 특정한 서술형 이름을 지정하는 것으로 일반화되어 있다.
- 형식을 정의 ▶ 기존의 다양한 자료형에 대한 단순한 이름(별명)을 할당하기 위한 구조를 제공
- 구조체 변수의 명을 간단히 만들 수 있는 C++에서는 잘 쓰이지 않는 예약어
typedef 사용하기
- typedef를 만드는 문법은 다음과 같다. (ex. int를 new_name으로 변경)
// typedef 재정의할 자료형 재정의할 이름
typedef int new_name;
int 형을 Int32로 이름 바꾸기
#include <iostream>
int main() {
typedef int Int32;
Int32 n = 30;
std::cout << "n = " << n << std::endl;
std::cout << "sizeof(int) = " << sizeof(int) << std::endl;
std::cout << "sizeof(Int32) = " << sizeof(Int32) << std::endl;
return 0;
}
n = 30
sizeof(int) = 4
sizeof(Int32) = 4
- typedef를 통해 int 형의 별명을 Int32로 설정하였다.
- int와 Int32는 정확히 동일한 동작을 한다.
배열에 typedef 이용하기
#include <iostream>
int main() {
int point1[2] = { 1 , 2 }; // 일반적인 배열 생성
typedef int Pair[2];
Pair point2 = { 3, 4 }; // int point2[2] = { 3, 4 }; 와 동일
std::cout << point1[0] << " " << point1[1] << std::endl;
std::cout << point2[0] << " " << point2[1] << std::endl;
return 0;
}
1 2
3 4
- Pair라는 2개의 원소를 담는 배열 자료형을 생성하였다.
- point2라는 변수는 Pair(순서쌍)이구나를 명확히 알 수 있다.
포인터에 typedef 이용하기
#include <iostream>
int main() {
typedef const char* String;
String name = "puppy";
std::cout << name << std::endl;
return 0;
}
puppy
- typedef를 통해 문자열 리터럴의 시작주소를 담는 const char* 형을 String이라는 별명으로 설정하였다.