C언어를 공부하다가 대뜸 생각난것이 자바처럼 int a = input.nextInt(); int [] arr = new int[a]; 가 가능한거와 달리 C언어는 동적할당을 부여해줘야된다. 입력한 크기만큼 메모리를 할당하여 배열처럼 사용한다는것.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <stdio.h> #include <stdlib.h> int main() { int size; scanf("%d", &size); int* arr = malloc(sizeof(int) * size);
for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < size; i++)
{ printf("%d ", arr[i]); } free(arr); }cs
다음 코드를 분석해보자.
int size; scanf("%d", &size); int* arr = malloc(sizeof(int) * size); | cs |
scanf로 크기를 입력받고 int크기에 입력받은 크기를 곱하여 메모리에 할당을 한다.
메모리가 준비되어있으면 입력받은 크기만큼 반복하여 값을 할당. 위의 코드같은경우 메모리가 준비되어있으면 또 유저한테 그 배열 안의 값을 입력받아 값을 할당을 한다.
마지막으로 free(arr); 를 해줌으로서 메모리 할당을 반듯이 해제를 시켜준다.