본문 바로가기

강의자료/C/C++

025. typedef과 #define의 차이점에 대해서 이해하자.

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


typedef이란, 기존의 타입에 새로운 이름을 부여하여 자신만의 커스텀 타입을 만드는 명령어이다.
#include 
using namespace std;

//#define ULI unsigned int
typedef unsigned int ULI;

typedef int		i32;
typedef __int64 i64;

void main()
{
	//int i=0;
	i32 i=0;

	//unsigned int fact = 1;
	ULI fact = 1;

	for(i=2; i < 13; i++)
	{
		fact *= i;
		cout << i << "! = " << fact << endl;
	}
}
// typedef를 이용한 포인터 타입 이름 지정.

#include 
using namespace std;
typedef int* pint;
void Swap(pint a, pint b);
void main()
{
	int num1 = 100, num2 = 200;
	cout << "스왑 전 : " << num1 << " / " << num2 << endl;
	Swap(&num1, &num2);
	cout << "스왑 후 : " << num1 << " / " << num2 << endl;
}
void Swap(pint a, pint b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

// #define과 typedef의 차이.

#include 
using namespace std;

#define dpint int*
typedef int* tpint;

void main()
{
	int a,b,c;
	unsigned int q,w,e;
	const int z=1,x=2,c=3;

	int* m,b,c;		// m만 int*, b와 c는 int
	int *m, *b, *c;	// m,b,c 모두 int*

	int *z;

	dpint aa;
	tpint bb;

	dpint mm, bb, cc;	// mm만 int*, bb와 cc는 int
	tpint qq, ww, ee;	// qq,ww,ee 모두 int*
}