Programming/C Language

typedef 선언

Jeongsuu 2017. 11. 1. 15:16

이번에는 구조체 정의에 빠질수 없는 typedef 선언에 대해 정리한다.


typedef선언은 복잡한 유형의 자료형 선언을 좀더 유연하게 편리하게 해준다.
    일종의 자료형 치환 개념으로 보면 이해가 쉽다.

typedef선언이 무엇인지 살펴보자 , typedef선언은 기존에 존재하는 자료형의 이름에 새 이름을 부여하는 것을 목적으로 한다.


예를 보자.

typedef int INT;            //int의 또 다른 이름 INT부여

위 선언으로 인해 컴파일러에게 "자료형의 이름 int에 INT라는 이름을 추가로 붙여준다 . "라고 전한다.

이렇게 되면 INT num; 은 int num; 과 동일한 선언이 된다.

다음 예제를 살펴보자



3~8행 typedef선언을 통해 자료형을 치환하고 , 
12행부터 typedef 선언을 한 자료형으로 변수들을 초기화한다 , 각각의 행에 달려있는 주석을 통해 이해하자.

위에 예제에서 보듯이 typedef선언을 이용하면 , 복잡한 유형의 자료형을 보다 심플하게 처리할 수 있다.
그리고 typdef선언으로 정의되는 자료형의 이름은 대문자로 시작하는것이 일반적이다.


다음으로 구조체를 정의하는데 typedef선언을 이용하는 예시를 보자

우리는 앞서 이렇게 선언해왔다.
struct point {

int xpos;

int ypos;

};

그리고 이 상황에서는 구조체 변수를 다음과 같이 선언한다 .     struct point pos;


그런데 typedef선언을 이용하면 좀 더 간결해진다.

typedef struct point Point;            //struct point를 Point로 치환
struct point 라는 자료형을 Point로 치환한 셈이다.

그러면 우리는 이런식으로 구조체 변수 선언이 가능하다.
    Point pos;                            // struct point pos; 와 같은 문장


이렇듯 struct선언과 구조체의 이름을 대상으로도 typedef 선언이 가능하다.

이번엔 구조체 정의와 동시에 typedef 선언법을 알아보자!

1) 첫번째 방법                                            2) 두번째 방법


typedef  struct point                                       struct point

{                                                                 {

int xpos;                                                      int xpos;

int ypos;                                                      int ypos;

}Point;                                                          };

typedef struct point Point;



위와 같이 2가지 방법으로 정리가 가능하다 , 취향에 따라 선택하여 이용하면 되는데 개인적으로 1번 방법이 편한것 같다.

그럼 여태 설명한 내용의 확인을 위해 예제를 보자.



각 행의 주석을 참고하여 코드의 흐름을 이해하고 결과값을 예상해보자.





이번 정리를 통해 구조체 typdef 선언법과 구조체 변수 선언과 동시에 초기화 방법을 이해하자