이번에는, 2 차원 배열의 행 개수와 열 개수를 구하는 예제를 보여드리겠습니다.


#include <stdio.h>

#define ROW_SIZE 3
#define COL_SIZE 2

int main(int argc, char* argv[]) {
	int arr[ROW_SIZE][COL_SIZE];
	int totalSize = sizeof(arr);
	int rowSize = sizeof(arr[0]);
	int elementSize = sizeof(arr[0][0]);
	int rowCount = totalSize / rowSize;
	int colCount = rowSize / elementSize;
	printf("배열 행의 개수 : %d\n", rowCount);
	printf("배열 열의 개수 : %d\n", colCount);
	return 0;
}


3 라인

2 차원 배열의 행 개수를 상수화합니다.


4 라인

2 차원 배열의 열 개수를 상수화합니다.


7 라인

2 차원 배열을 선언합니다. (여기서는 편의상 정수형 배열을 선언하겠습니다.)


8 라인

sizeof(arr) 문장을 통해서 arr 배열의 전체 크기를 byte 로 구해서 totalSize 변수에 대입합니다. arr 배열의 전체 크기는 int 형 (4 byte) 가 총 ROW_SIZE (3) X COL_SIZE (2) 개이므로 (4 X 3 X 2) 24 byte 가 됩니다.  


9 라인

sizeof(arr[0]) 문장을 통해서 arr 배열의 0 번째 요소의 크기를 byte 로 구해서 rowSize 변수에 대입합니다. 2 차원 배열에서의 arr[0] 은 0 행을 뜻하므로 0 행의 크기는 int 형이 2 개 있는 1 차원 배열이므로 4 X 2 = 8 byte 가 됩니다.


10 라인

sizeof(arr[0][0]) 문장을 통해서 arr[0][0] 요소의 크기를 byte 로 구해서 elementSize 변수에 대입합니다. 이 요소의 크기는 int 형이므로 4 byte 가 됩니다.


11 라인

totalSize (24) / rowSize (8) 의 결과를 rowCount 변수에 대입합니다. (24 / 8 = 3) 이것이 2 차원 배열의 행 개수가 됩니다.


12 라인

rowSize (8) / elementSize (4) 의 결과를 colCount 변수에 대입합니다. (8 / 4 = 2) 이것이 2 차원 배열의 열 개수가 됩니다.


13 ~ 14 라인

구한 2 차원 배열의 행 개수와 열 개수를 출력합니다.


[실행 결과]


by kkikkodev 2017. 5. 22. 18:00