C 언어 배열 크기 입력받기 - C eon-eo baeyeol keugi iblyeogbadgi


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); 를 해줌으로서 메모리 할당을 반듯이 해제를 시켜준다.

'C 언어' Related Articles