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

[표 2-1] 두 프로그램의 calloc 함수 호출
                          실습 2-3    단일한 int형 객체 생성                               calloc(1, sizeof(int))
                          실습 2-4    자료형이 int형이고, 요소 개수가 na인 배열 생성                calloc(na, sizeof(int))



                        달라진 점은 첫 번째 인수의 값입니다. calloc 함수는 ‘단일한 정수를 위한 메모리를 확보하세
                        요.’라든가 ‘배열을 위한 메모리를 확보하세요.’와 같이 자료형을 지정한 명령을 사용할 필요
                        가 없습니다. calloc 함수가 확보하는 것은 특정한 자료형의 객체가 아니라 단순히 메모리 영

                        역이기 때문입니다.


                        이 프로그램에서 배열을 생성, 접근, 해제하는 과정을 그림 2-6에 나타냈습니다. calloc 함수는
                        확보한 메모리의 첫 번째 주소를 반환하고, 그 값은 포인터 a에 대입됩니다. 이때 포인터와 배열

                        은 서로 바꾸어 쓸 수 있습니다. 따라서 확보한 메모리의 요소는 식 a[0], a[1], a[2] … 등으로 접
                        근할 수 있습니다. 이렇게 사용하면 포인터 a를 마치 배열인 것처럼 사용할 수 있습니다.



                        이 프로그램은 배열의 요소 개수를 실행 시점에 결정합니다. 배열을 생성한 후 for문으로 반
                        복하여 요소 a[i]의 값을 읽고 그 값을 출력합니다.


                               a                     b                            c
                                              생성                           해제
                                     a                    a                           a
                        생성한 배열을
                        가리키는 포인터
                                                                     a[0]
                                                                     a[1]
                                                        확보한 영역       a[2]
                                                                     a[3]
                                                                     a[4]




                                    int *a;            a = calloc(na, sizeof(int));    free(a);

                                         [그림 2-6] 배열의 동적 생성과 해제(요소 개수 na는 5입니다)

                          실습 2-4                                            •완성 파일 chap02/intary_dynamic.c
                         01  /* int형 배열을 동적으로 생성하고 해제합니다. */
                         02  #include <stdio.h>
                         03  #include <stdlib.h>
                         04





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