[c++] 배열 포인터와 다차원 배열의 관계
다차원 배열과 배열 포인터는 C++ 프로그래밍에서 혼돈을 주는 주제 중 하나입니다. 이 두 가지 개념을 이해하고 활용하여 다차원 배열을 효과적으로 다룰 수 있습니다.
배열 포인터란 무엇인가?
배열 포인터는 배열을 가리키는 포인터를 말합니다. 다음은 배열 포인터를 선언하는 방법입니다.
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // 배열 포인터 선언
위의 예시에서 arr
은 배열의 첫 번째 요소를 나타내며, ptr
은 arr
의 주소를 가리킵니다.
다차원 배열과 배열 포인터
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/