[c++] 배열과 포인터의 차이점

배열과 포인터는 C++ 프로그래밍에서 주요한 데이터 타입이지만, 두 가지의 사용과 동작에는 몇 가지 중요한 차이점이 있습니다. 이번에는 배열과 포인터의 차이점에 대해 알아보겠습니다.

배열

배열은 동일한 데이터 타입의 요소들이 연속적으로 저장되는 선형 구조입니다. 배열의 크기는 선언할 때 결정되며, 크기를 변경할 수 없습니다.

int numbers[5] = {1, 2, 3, 4, 5};

위의 예시에서 numbers는 5개의 정수로 이루어진 배열입니다.

포인터

포인터는 변수의 주소를 저장하는 데이터 타입으로, 동적 메모리 할당 및 간접 참조를 위해 사용됩니다. 포인터는 동적으로 할당된 메모리의 주소를 저장하거나, 다른 변수의 주소를 가리킬 수 있습니다.

int *ptr;
int number = 10;
ptr = &number;

위의 예시에서 ptrnumber 변수의 주소를 가리키는 포인터입니다.

배열과 포인터의 차이점

  1. 크기 결정: 배열은 선언 시 크기가 결정되며, 크기를 변경할 수 없지만, 포인터는 언제든지 다른 주소로 재할당될 수 있습니다.

  2. 연산: 배열에 대해 [] 연산자를 사용하여 요소에 직접 접근할 수 있지만, 포인터는 간접 참조 연산자(*)를 사용하여 해당 주소의 값을 가져와야 합니다.

  3. 상수: 배열은 상수로 간주되며 배열의 이름은 상수 포인터로 취급됩니다. 반면에 포인터는 가변적인 값을 가질 수 있습니다.

  4. 메모리 할당: 배열은 스택에 할당되고, 크기가 컴파일 타임에 결정됩니다. 반면에 포인터는 동적으로 할당되어 힙 메모리에 위치할 수 있습니다.

배열과 포인터는 각각의 용도와 동작 방식에 따라 다른 사용 사례를 갖고 있습니다. 따라서 프로그래밍 과제의 요구 사항에 맞게 적절히 사용되어야 합니다.

참고 자료: GeeksforGeeks - Difference between array and pointer