Programming Language/C, C++

struct, typedef

MOLOKINI 2014. 5. 13. 22:49

먼저 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 문을 사용하게 되면 인스턴스가 생성되는게 아니라, 자료형이 하나 정의되게 되는 것입니다.

'Programming Language > C, C++' 카테고리의 다른 글

Cast - reinterpret_cast, static_cast, const_cast, dynamic_cast  (0) 2014.05.13
LPCTSTR, TCHAR, char  (0) 2014.05.13
C++ TR1 설치  (0) 2014.05.13
inline 함수  (0) 2014.05.11
릴리즈모드 링크에러  (0) 2014.05.11