struct, typedef
먼저 Typedef란 무엇이냐
Type Definition으로, 타입정의
자료형 자체를 인스턴스로 생성할 수 있습니다.
typedef unsigned int UINT;
UINT라는 이름으로 unsigned int형을 사용하겠다. 요런 뜻입니다.
//(1)
struct _tagPoint{
int x;
int y;
}POINT;
//(1-1)
struct _tagPoint{
int x;
int y;
};
//(2)
typedef struct _tagPoint{
int x;
int y;
}POINT;
//(2-1)
typedef struct{
int x;
int y;
}POINT;
하나씩 설명하겠습니다.
(1)에서는 POINT라는 인스턴스를 생성한것입니다.
POINT.x 로 사용할 수 있다는 말입니다.
(1-1)에서는 선언된 인스턴스가 없습니다.
struct _tagPoint POINTS;
POINTS s;
s.x 로 사용할 수 있습니다.
(2)에서는 구조체 자체를 POINT라는 자료형으로 정의한 것입니다.
POINT s;
s.x 로 사용할 수 있습니다.
(2-1)도 마찬가지지만
tag명을 생략하고 사용가능합니다.
(2)와의 차이점은 struct POINT s; s.x;로 사용할 수 없습니다.
오로지 POINT s; s.x;로만 사용할 수 있습니다.
정리하면 typedef 문을 사용하게 되면 인스턴스가 생성되는게 아니라, 자료형이 하나 정의되게 되는 것입니다.