[c++] 배열과 포인터의 관계

배열과 포인터는 C++에서 밀접한 관련이 있습니다. 배열과 포인터는 메모리 상에서 연속된 위치를 차지하고 연결되어 있어, 유사한 동작을 하지만 다르게 사용됩니다.

배열과 포인터의 유사성

배열과 포인터는 둘 다 메모리 상의 연속된 위치에 대한 참조를 제공합니다. 또한 배열의 이름은 배열의 첫 번째 요소를 나타내는 포인터로 해석될 수 있습니다.

int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // arr은 배열의 첫 번째 요소를 가리키는 포인터로 해석될 수 있음

배열과 포인터의 차이

배열과 포인터의 가장 큰 차이점은 다음과 같습니다.

  1. 재할당: 배열은 한 번 할당되면 크기를 변경할 수 없지만, 포인터는 다른 메모리 주소를 가리키도록 재할당될 수 있습니다.
  2. 연산: 배열은 크기를 가지고 있어 인덱스를 사용하여 요소에 접근하지만, 포인터는 산술 연산을 사용하여 다른 요소에 접근할 수 있습니다.
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;
ptr++; // 다음 요소를 가리킴

결론

배열과 포인터는 서로 관련이 있지만, 다르게 사용됩니다. 배열은 고정 크기이고 한 번 할당되면 크기를 변경할 수 없지만, 포인터는 재할당이 가능하고 산술 연산을 통해 다른 메모리 위치를 가리킬 수 있습니다. 프로그래밍에서 이러한 차이를 이해하고 올바르게 활용하는 것이 중요합니다.

참조: C++ Reference - Arrays