Page 52 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 52
05 int main (void)
06 {
07 int i;
08 int *a; /* 배열의 첫 번째 요소의 포인터 */
09 int na; /* 배열 a의 요소 개수 */
10 printf("요소 개수 : ");
11 scanf("%d", &na);
12 a = calloc(na, sizeof(int)); /* 요소 개수가 na인 int형 배열을 생성 */
13
14 if(a == NULL)
15 puts("메모리 확보에 실패했습니다.");
16 else {
17 printf("%d개의 정수를 입력하세요.\n", na);
18 for(i = 0; i < na; i++) {
19 printf("a[%d] : ", i); 실행 결과
20 scanf("%d", &a[i]); 요소 개수 : 4
21 } 4개의 정수를 입력하세요.
22 printf("각 요솟값은 아래와 같습니다.\n"); a[0] : 10
a[1] : 73
23 for(i = 0; i < na; i++)
a[2] : 2
24 printf("a[%d] = %d\n", i, a[i]);
a[3] : -5
25 free(a); /* 요소 개수가 na인 int형 배열을 해제 */ 각 요솟값은 아래와 같습니다.
26 } a[0] = 10
27 a[1] = 73
28 return 0; a[2] = 2
a[3] = -5
29 }
배열의 사용이 끝나면 free 함수로 메모리를 해제합니다. 해제 방법은 단일 객체의 해제와 마
찬가지로 확보한 영역의 포인터를 free 함수의 매개변수로 전달합니다.
free 함수로 해제한 영역은 간접 연산자 *와 첨자 연산자 [ ]로 접근할 수 없습니다.
a는 배열에 사용하기 위해 확보한 메모리의 첫 번째 주소를 가리키는 포인터입니다. a의 의미
가 배열은 아니지만 앞으로 ‘배열 a를 생성한다.’ 또는 ‘배열 a를 해제한다.’라는 표현을 사용
하겠습니다.
보충수업 2-1 void 포인터
calloc 함수, malloc 함수, free 함수는 char형 객체, int형 객체, 나아가 배열이나 구조체 객체 등 모
든 자료형의 메모리 확보 또는 해제에 사용합니다. 이때 특정한 자료형의 포인터를 주고받을 때 자료
52 C 알고리즘