티스토리 뷰
구조체 선언과 구조체형 변수 정의
struct 구조체의 코드를 보다보면 typedef struct 라고 쓴걸 볼 수 있는데,어떤 의미인지 알아 보도록 하자.
struct의 정의와 선언 그리고 typedef
typedef 이야기를 하기에 앞서 struct 구조체에 대해서 좀 짚고 넘어가는게 좋을듯 하다.우선 struct 는 아시다시피 구조에 대해 정의하는 타입이다.가령 슈퍼맨의 구조체를 선언하려면 다음과 같이 하면 된다.
struct SuperMan {
int power;
int age;
};
여기까지가 구조체가 어떻게 구성되는지 컴파일러에게 알려준것이고,실제로 메모리를 갖고있는 구조체 변수를 선언하려면 다음과 같이 한다.
struct SuperMan ClarkKent;
자 여기까지 하면 우리의 슈퍼맨이 실체화 된것이다. ^^또는 슈퍼맨 구조 속성을 바로 변수 선언과 동시에 지정 할 수도 있다.
struct SuperMan {
int power;
int age;
}ClarkKent;
이처럼 구조체 선언은 새로운 데이터 유형을 만든다는 뜻이고구조체 변수 정의는 구조체 타입의 새로운 메모리 공간을 할당한다는 뜻이다.
typedef 기본이해
typedef 은 원하는 데이터 유형에 다른 별명을 지어주는걸 말하는데가령 unsigned short int 란 데이터 타입이 있는데 이걸 매번 적어 주려니귀찮기도 하고 오타가 날수도 있고 그래서 다른 별명 UINT16 을 지어주면얼마나 편리하겠는가? 다음과 같이 쓴다.
typedef unsigned short int UINT16;
typedef struct
이제 마지막으로 typedef struct에 대해 알아보자.typdef은 typedef + [타입] + [별명] 이런식으로 쓰는데아래 슈퍼맨 구조체 typedef을 나누어서 생각하면
typedef struct SuperMan {
int power;
int age;
} sman_t;
별명을 지어주고자 하는 타입 부분에는 struct { ... } 이 되겠고마지막의sman_t는별명이 된다.즉 SuperMan 구조체 선언을 sman_t란 별명으로 부르겠다는 뜻이다.그럼 이제부터 슈퍼맨 구조체 변수 선언은 sman_t ClarkKent; 라고 쓰면 된다.이렇게 typedef struct를 쓰는 이유는 struct SuperMan ClarkKent; 라고 쓰는 것 보다좀더 쓰기에 간편하기 때문에 그렇다. 매번 struct 쓰는것도 귀찮으니 말이다.
정리
struct와 typedef struct의 차이점은 구조체 변수 정의시에 좀더 간편하게 사용하기 위함이다.
'잉고래의 코딩' 카테고리의 다른 글
윈도우 vi 에디터 vim 컬러스킴(colorscheme) 색상 변경 방법 (0) | 2013.05.06 |
---|---|
함수포인터를 typedef으로 선언해서 쓰는 이유 (0) | 2013.05.06 |
프로세스, 태스크, 스레드의 차이점이 뭘까? (0) | 2013.05.03 |
파이썬 프로그래머인가? 그럼 스위트를 알아두자. (0) | 2013.05.03 |
'해피투게더' 유인나로 만든 파이썬 리스트 (0) | 2013.05.03 |
- Total
- Today
- Yesterday
- Ai
- 박근혜
- 아이나비 탭 XD11 Pro
- 소니 캠코더
- 소니 AXP35
- 아이나비 패드
- qxd1000a
- 티스토리
- SM5
- 독서
- c언어
- 블로그
- 팅크웨어
- 아이나비 태블릿
- 독후감
- 블랙박스
- 아이나비
- 캠코더
- 소니
- CSS
- 티스토리챌린지
- 아이나비 Tab XD9
- 아이나비 탭 xd9
- 소니 핸디캠
- X1 DASH
- Sony
- AXP35
- 오블완
- 서평
- 한빛미디어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |