Page 90 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 90
체 태그(structure tag)라고 합니다. 그리고 구조체를 구성하는 요소를 구조체 멤버(structure
member)라고 합니다. 여기에서는 { } 안에 선언한 x, y, z가 구조체 멤버입니다.
/*--- 구조체 xyz ---*/
struct xyz {
int x; /* int형 멤버 */ p a
long y; /* long형 멤버 */ a.x p->x
double z; /* double형 멤버 */ a.y p->y
};
a.z p->z
/*--- struct xyz형 a의 정의 ---*/
struct xyz a;
/*--- a를 가리키는 포인터 ---*/
struct xyz *p = &a;
구조체의 내용
[그림 2-22] 구조체형과 멤버의 접근
즉, struct xyz형의 구조체 내용물(structure content)은 int형(x), long 형(y), double형(z)이 모
여 있는 멤버인 셈입니다. 그림 2-22에서 회색 부분은 struct xyz형을 갖는 객체 a를 정의합
니다. 구조체의 객체 안 멤버는 . 연산자를 사용하여 다음과 같은 형식으로 접근합니다.
a.x /* 객체 이름.멤버 이름(객체 a 안의 멤버 x) */
또 p가 struct xyz형에 대한 포인터일 때 p가 가리키는 객체의 멤버에 접근하는 형식은 -> 연
산자를 사용합니다.
p->x /* 포인터 이름 -> 멤버 이름(p가 가리키는 객체 안의 멤버 x) */
보통 . 연산자를 도트 연산자(dot operator), -> 연산자를 화살표 연산자(arrow operator)라 부릅니다.
그런데 구조체는 태그 이름 xyz만을 구조체 자료형의 이름으로 지정할 수 없습니다. 구조체
자료형의 이름은 struct xyz처럼 두 단어로 구성해야 합니다. 이때 typedef 선언을 사용해 짧
은 이름으로 다시 만들어 사용할 수 있습니다. 예를 들어,
typedef struct xyz XYZ; /* struct xyz와 동의어인 XYZ를 선언 */
라고 선언하면 struct xyz에 대하여 typedef 이름인 동의어 XYZ를 정의할 수 있습니다. 이
제 하나의 단어 XYZ만으로 구조체 자료형의 이름을 나타낼 수 있습니다. 이렇게 하면 변수 a
90 C 알고리즘