배열은 일반 변수와 마찬가지로 함수의 인수(argument)로 전달할 수 있습니다. 이 글에서는 2차원 배열을 함수에 전달한 뒤, 해당 함수 안에서 배열의 모든 요소를 출력하는 C++ 프로그램을 살펴보겠습니다.
알고리즘
시작 2차원 배열 n[][]을 show() 함수에 전달한다. show() 함수가 호출되면 중첩된 for 루프를 사용해 배열 n을 순회하며 모든 요소를 출력한다. 종료
예제 코드
#include <iostream>
using namespace std;
void show(int n[4][3]);
int main() {
int n[4][3] = {
{3, 4 ,2},
{9, 5 ,1},
{7, 6, 2},
{4, 8, 1}};
show(n);
return 0;
}
void show(int n[][3]) {
cout << "값 출력: " << endl;
for(int i = 0; i < 4; ++i) {
for(int j = 0; j < 3; ++j) {
cout << n[i][j] << " ";
}
}
}출력 결과
값 출력: 3 4 2 9 5 1 7 6 2 4 8 1
코드 설명
위 코드의 동작 흐름은 다음과 같습니다.
1. 배열 선언 및 초기화: main() 함수 안에서 4행 3열 크기의 2차원 배열 n을 선언하고, 각 행마다 3개씩 총 12개의 정수 값으로 초기화합니다.
2. 함수 호출: show(n)을 호출하여 배열 전체를 함수에 전달합니다. 이때 배열 이름 n은 배열의 첫 번째 요소를 가리키는 포인터처럼 동작하므로, 배열이 통째로 복사되지 않고 주소만 전달됩니다.
3. 매개변수 선언: 함수 원형에서는 void show(int n[4][3])으로 선언했지만, 함수 정의에서는 void show(int n[][3])처럼 첫 번째 차원의 크기를 생략할 수 있습니다. 다만 두 번째 차원(열의 개수)은 반드시 명시해야 합니다. 컴파일러가 n[i][j]와 같은 요소에 접근할 때 열의 크기를 기준으로 메모리 위치를 계산하기 때문입니다.
4. 중첩 루프를 이용한 순회: 바깥쪽 for 루프(i)가 행을, 안쪽 for 루프(j)가 열을 담당하며, 두 루프가 모두 실행되면서 배열의 모든 요소가 한 줄에 공백으로 구분되어 출력됩니다.
정리
C++에서 2차원 배열을 함수에 전달할 때는 열의 크기를 반드시 지정해야 하며, 함수 내부에서는 중첩 for 루프를 사용해 행과 열을 순회하며 배열의 모든 요소에 접근할 수 있습니다. 이 방식은 행렬 데이터 처리, 표 형태의 데이터 출력 등 다양한 상황에서 유용하게 활용됩니다.