C <16>. 구조체

오늘의 주제

  • 구조체 

열 여섯 번째 시간입니다.^^
지난 번에는 전처리자에 대해 알아보았습니다.
잘만 사용하면 좋지만, 잘못 사용한다면 독이 될 수 있는 녀석입니다.
사용에 유의하세요^^
오늘은 또 하나의 개념 구조체에 대해 알아보도록 하겠습니다.
자 그럼 이제 시작해 볼까요?^^
스따뚜!!!

구조체의 개념


간단 합니다.
이 녀석은 배열과는 다르게 서로 다른 종류의 자료들이 들어갈 수 있습니다.
큰 박스 안에 서로 다른 크기의 작은 박스들이 들어가 있는 형태라고 보시면 되겠습니다.
그래서 우리가 큰 박스를 만들고 그 안에 작은 박스들을 만들어 넣습니다.
선언하는 방법은

struct 구조체이름 {
  내용물(변수들 선언)
} 구조체변수이름;

`

한 번 구조체 이름으로 선언 해 주면
다음 번에는 
struct 구조체이름 구조체변수이름;
이라고 선언 해 줄 수도 있습니다.
구조체 안의 변수에 접근하는 방법은
구조체변수명.내용물변수이름
이런식으로 접근하게 됩니다.
말로 하니까 어렵네요 ㅎ 예제를 한 번 봅시다요

구조체 예제

yagom이라는 이름의 구조체를 tYagom, tAgainYagom 이라고 선언해 준 형태입니다.
yagom이라는 이름의 구조체 안에는 int형 변수 nNumchar 포인터형 변수 szName이 들어가 있네요~
그곳에 접근하는 방법은 .  을 통해서 접근하는 것이죠.

결과 캡쳐입니다. 다들 예상대로 출력이 되었나요?ㅎ
그런데 구조체를 선언 할 때 마다 struct yagom 이렇게 하기가 좀 귀찬습니다...ㅎㅎ
그래서 조금이라도 더 간단히 하기 위해서 우리는 이렇게도 선언을 할 수 있습니다.
typedef 라는 녀석을 이용하는데요.
typedef는 어떠한 형태의 타입을 나는 이렇게 정의 하겠다, 라고 말해주는 것으로써 #define이랑 하는 짓은 비슷합니다만, 정의 해 줄 녀석이 아무거나가 아니라 자료형이라는 점이 다릅니다.
typedef int my;
이런 식으로 해주면
int a; 라고 선언 한 것과 my a; 라고 선언 한 것과 동일한 효과를 가져오게 됩니다.
그러므로 typedef struct yagom{ ...} yagom; 이런 식으로 선언을 해준다면 struct yagom{...}yagom과 같아지는 효과를 보게 되겠지요.
말로는 잘 이해가 다가오지 않죠?ㅎ 실습 해 봅시다.

위에 그림처럼 struct yagom을 한 것과 그냥 yagom이라고 한 것과 같은 효과를 볼 수가 있네요~

자, 이렇게 해서 구조체에 대해 간단히 알아보았습니다.
참, 오늘 빼먹은 것이 있는데, 만약 구조체의 포인터변수에서 내부의 변수에 접근을 하려면 . 을 사용하는 것이 아니라 ->을 사용하게 됩니다.
잘 이해가 안가시면 다다음 번 포스팅 때 제대로 볼 수 있으실 거예요~ㅎ
그럼 다음에 또 뵈어요~^^
by yagom


p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기

댓글 남기기

Close