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 알고리즘
   85   86   87   88   89   90   91   92   93   94   95