이번 시간에는, 2 차원 배열을 함수의 인자 (매개변수) 로 전달하는 방법에 대해서 알아보겠습니다. 그 중에서도, int 형 배열에 대해서 알아보겠습니다. (다른 자료형들도 마찬가지 원리이기 때문입니다.)


#include <stdio.h>

#define ARR_ROW_SIZE 3
#define ARR_COL_SIZE 4

void PrintArray(int(*arr)[ARR_COL_SIZE], int row, int col);

int main(int argc, char* argv[]){
	int arr[ARR_ROW_SIZE][ARR_COL_SIZE] = {
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12}
	};
	PrintArray(arr, ARR_ROW_SIZE, ARR_COL_SIZE);
	return 0;
}

void PrintArray(int(*arr)[ARR_COL_SIZE], int row, int col){
	int i;
	int j;
	for (i = 0; i < row; i++){
		for (j = 0; j < col; j++){
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
}


3 ~ 4 라인

2 차원 배열의 가로, 세로 크기를 상수화 합니다.


6 라인

추후 사용될 함수의 선언부입니다.


9 ~ 13 라인

int 형 2 차원 배열을 선언한 뒤, 동시에 정수들로 초기화하고 있습니다.


14 라인

PrintArray 함수를 호출하면서, 2 차원 배열, 2 차원 배열의 행 개수와 열 개수를 매개변수로 넘기고 있습니다.


18 라인

PrintArray 함수의 정의부입니다. 매개변수로 2 차원 배열, 행 개수, 열 개수를 받아서, 2 차원 배열의 전체 요소들을 화면에 출력하는 역할을 합니다. 


2 차원 배열을 함수의 매개변수로 넘길 때는, 2 차원 배열명을 그대로 넘기고 (행과 열은 필수는 아님), 함수의 정의부에서는, 2 차원 배열 포인터의 형태로 받습니다.


즉 2 차원 배열을 함수의 매개변수로 선언할 때는, "배열 요소의 자료형 (*배열명)[배열의 열 개수]" 의 형태로 선언합니다.


21 ~ 26 라인

행 개수와 열 개수를 이용하여, 배열을 전체 돌면서, 하나하나씩 배열의 요소를 화면에 출력합니다.


[실행 결과]

by kkikkodev 2015. 8. 2. 07:26