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