[c++] 배열 포인터와 다차원 배열의 관계

다차원 배열과 배열 포인터는 C++ 프로그래밍에서 혼돈을 주는 주제 중 하나입니다. 이 두 가지 개념을 이해하고 활용하여 다차원 배열을 효과적으로 다룰 수 있습니다.

배열 포인터란 무엇인가?

배열 포인터는 배열을 가리키는 포인터를 말합니다. 다음은 배열 포인터를 선언하는 방법입니다.

int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;  // 배열 포인터 선언

위의 예시에서 arr은 배열의 첫 번째 요소를 나타내며, ptrarr의 주소를 가리킵니다.

다차원 배열과 배열 포인터

C++에서 2차원 배열은 배열의 배열로 표현됩니다. 각 행은 배열에 대한 포인터입니다. 다음은 2차원 배열을 선언하는 방법입니다.

int arr[2][3] = { {1, 2, 3}, {4, 5, 6} };
int (*ptr)[3] = arr;  // 배열 포인터 선언

여기서 ptr은 3개의 요소를 가지는 배열을 가리키는 포인터입니다.

배열 포인터를 활용한 다차원 배열 접근

배열 포인터를 사용하여 다차원 배열에 접근할 수 있습니다. 다음은 배열 포인터를 통해 2차원 배열의 요소에 접근하는 예시입니다.

int arr[2][3] = { {1, 2, 3}, {4, 5, 6} };
int (*ptr)[3] = arr;  // 배열 포인터 선언

std::cout << *(*ptr + 2);  // 3 출력
std::cout << *(*(ptr + 1) + 1);  // 5 출력

위의 코드에서 ptr을 사용하여 2차원 배열의 각 요소에 접근하고 값을 출력하는 것을 볼 수 있습니다.

따라서, 배열 포인터를 이용하면 다차원 배열을 효과적으로 다룰 수 있고, 여러 차원의 배열에 대한 포인터를 쉽게 선언할 수 있게 됩니다.

마치며

배열 포인터와 다차원 배열은 C++에서 중요한 주제입니다. 배열 포인터를 이용하여 다차원 배열을 다뤄보고 포인터의 연산을 통해 배열에 접근하는 것은 프로그래밍 실력 향상에 도움이 될 것입니다.

참고 문헌: https://www.learncpp.com/cpp-tutorial/613-arrays-and-pointer-arithmetic/