필요할 때 메모리를 확보하고 불필요할 때 메모리를 해제해 언제든지 필요한 요소 개수의 배열을 만들 수 있다.
#include <stdio.h>
#include <stdlib.h>
int main() {
int* x;
x = calloc(1, sizeof(int));
if(x == NULL) {
puts("메모리 할당에 실패했습니다.\n");
}
else {
*x = 57;
printf("*x = %d\n", *x);
free(x);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
int *a;
int na;
printf("요소 개수 : ");
scanf("%d", &na);
a = calloc(na, sizeof(int));
if(a == NULL)
puts("메모리 확보에 실패했습니다.");
else {
printf("%d개의 정수를 입력하세요.\n", na);
for(i = 0; i < na; i++) {
printf("a[%d] : ", i);
scanf("%d", &a[i]);
}
printf("각 요솟값은 아래와 같습니다.\n");
for(i = 0; i < na; i++)
printf("a[%d] = %d\n", i, a[i]);
free(a);
}
return 0;
}
code 1:
code 2: