[c] 배열과 동적 변수

배열은 프로그래밍에서 자주 사용되는 데이터 구조로, 동일한 데이터 타입의 요소들을 순차적으로 저장하는 자료구조입니다. C 언어에서 배열은 고정된 크기를 가지고 있어 실행 중에 크기를 변경할 수 없습니다. 그러나 동적 변수를 사용하여 실행 중에 크기를 동적으로 변경할 수 있습니다.

배열의 한계

일반적으로 배열을 정의할 때 크기를 미리 지정해야 합니다. 예를 들어, 다섯 개의 정수값을 저장하는 배열을 선언할 경우 다음과 같이 작성할 수 있습니다.

int numbers[5];

위 코드에서 numbers 배열은 5개의 정수값을 저장할 수 있도록 사이즈가 고정되어 있습니다. 그러나 프로그램 실행 중에 배열의 크기를 동적으로 변경하는 것은 불가능합니다.

동적 변수

동적 변수는 실행 중에 메모리를 할당하고 해제할 수 있는 변수입니다. C 언어에서는 malloc 함수를 사용하여 동적으로 메모리를 할당받을 수 있습니다. 예를 들어, malloc 함수를 사용하여 100바이트의 메모리를 할당하려면 다음과 같이 작성할 수 있습니다.

int *ptr = (int *)malloc(100);

위 코드에서 ptrint 타입의 포인터이며, malloc 함수를 사용하여 100바이트의 메모리를 할당받습니다.

배열과 동적 변수의 조합

동적 변수를 사용하여 실행 중에 배열을 생성할 수 있습니다. 예를 들어, 사용자로부터 배열의 크기를 입력받아 동적으로 메모리를 할당하여 배열을 생성할 수 있습니다. 아래는 이러한 방법을 보여주는 예시 코드입니다.

int size;
printf("Enter the size of the array: ");
scanf("%d", &size);

int *dynamicArray = (int *)malloc(size * sizeof(int));

이렇게 하면 프로그램 실행 중에 사용자가 입력한 크기에 맞게 메모리가 할당되며, 동적으로 크기가 조절되는 배열을 생성할 수 있습니다.

동적 변수를 사용하여 배열의 크기를 동적으로 조절하면 메모리 관리에 있어 유연성을 제공할 수 있으나, 메모리 누수나 올바르지 않은 메모리 접근을 유발할 수 있으므로 주의가 필요합니다.

이러한 방법을 통해, C 프로그래밍에서 배열과 동적 변수를 조합하여 유연하고 효율적인 메모리 관리가 가능해집니다.

참고 자료