Page 53 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 53

형이 서로 맞지 않으면 문제가 발생하므로 void 포인터를 반환하거나 받는 데 사용합니다. void 포인
                        터는 모든 형의 객체를 가리킬 수 있습니다. void 포인터의 값을 모든 자료형의 포인터에 대입할 수 있

                        고, 거꾸로 모든 자료형의 포인터 값을 void 포인터에 대입할 수 있습니다.







                            보충수업 2-2   포인터와 배열

                        포인터란?
                        포인터(pointer)는 ‘객체(변수) 또는 함수를 가리키는 것’으로 정의할 수 있습니다. 아래는 포인터 선언
                        의 예입니다.


                         int *p;           /*p는 int형 객체를 가리키는 포인터 */
                         double *q;        /*q는 double형 객체를 가리키는 포인터 */


                        위에서 볼 수 있듯이 포인터의 자료형은 포인터가 가리키는 곳의 객체의 자료형을 따라 갑니다. int형
                        객체를 가리키는 포인터는 int *형이고 double형 객체를 가리키는 포인터는 double *형입니다. n이
                        int형 객체라고 할 때, 포인터 p가 객체 n을 가리키기 위해서는 아래처럼 n의 주소를 p에 대입해야 합
                        니다.


                         p = &n;           /* n의 주소를 p에 대입합니다(p가 n을 가리키도록 합니다). */



                        위에서 n에 사용한 단항 연산자 &는 주소 연산자라고 하며 피연산자(n)의 주소를 가져옵니다. 포인터

                        p가 가리키는 객체의 값은 간접 연산자라고 하는 단항 연산자 *를 사용하여 접근할 수 있습니다. p가 n
                        을 가리킨다면 p가 가리키는 곳에 있는 n의 값을 접근하는 식은 *p입니다. 그러므로 다음을 실행하면
                        n에 999가 대입됩니다.


                         *p = 999;         /* p가 가리키는 곳에 999를 대입합니다. */


                        다시 말해 ‘*p는 n과 같다.’라고 말할 수 있습니다. 만약 p가 다른 객체 x를 가리킨다면 ‘*p는 x와 같
                        다.’라고 말할 수 있습니다.



                        포인터와 배열
                        포인터와 배열에 대해 그림 2C-1을 보며 좀 더 자세히 살펴보겠습니다. 배열 a와 포인터 p가 선언될
                        때 p의 초기화는 배열 이름인 a로 할 수 있습니다. 그런데 배열 이름은 그 배열의 첫 번째 요소에 대한



                                                                                      02• 기본 자료구조  53
   48   49   50   51   52   53   54   55   56   57   58