C++/C++ 기초

[C++] typedef

wn42 2022. 12. 26. 17:59

 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이라는 별명으로 설정하였다.