예습

[예습] 9월 9일 예습

k-codestudy 2024. 9. 10. 03:15

다차원 배열 Multidimensional Arrays

배열의 요소는 배열을 포함하여 모든 자료형일 수 있다. 배열을 가진 배열을 다차원 배열(multidimensional array)이라고 한다.

 

int arArray[2][4];

 

위 배열은 2개의 첨자를 가지고 있으므로 2차원 배열이다.

2차원 배열에서 첫 번쨰(왼쪽) 첨자는 row(행)으로 생각하고 두 번째(오른쪽) 첨자를 column(열)로 생각하는게 편리하다.

이것을 행-우선(row-major)순위라고 한다

간단하게 생각한다면 학교를 기준으로 몇반(첫 번째 첨자), 몇번(두 번쨰 첨자) 라고 생각하면 이해가 쉬울것이다.

위의 2차원 배열을 다음과 같이 배열이 된다

[0][0] [0][1] [0][2] [0][3]
[1][0] [1][1] [1][2] [1][3]
[2][0] [2][1] [2][2] [2][3]

 

2차월 배열에 접근을 하고싶다면 두 개의 첨자를 사용하면 된다.

int arArray[1][2] = 5;

 

 

2차원 배열 초기화  (Initializing two-dimensional arrays)

 

int arArray[2][4] =
{
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
};

각각의 숫자 집합이 행을 나타내는 중첩된 중괄호를 사용하는게 가장 보기 쉽다.

일부 컴파일러에서는 내부 중괄호를 생략이 가능하지만, 가독성을 위해 생략하지 않는게 좋다.

C++에서는 초기화 목록보다 적은 초기화 값이 있으면 나머지 요소는 0으로 초기화가 되다.

int arArray[2][4] =
{
    {1,2},     // 1,2,0,0
    {5,6,7},   // 5,6,7,0
    {9,10,11,12} // 9,10,11,12
};

 

초기화 목록이 있는 2차원 배열은 왼쪽 첨자가 생략 가능하다.

컴파일은 배열 길이가 몇인지 계산이 가능하다.

int arArray[][4] =
{
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12},
};

 

이와 같이 첫 번째, 두 번째 첨자 둘다 없는 경우는 허용이 되지 않는다

 

int arArray[][] =
{
    {1,2,3,4},
    {5,6,7,8},
};

 

배열의 길이를 명시적으로 선언하는 경우에만 작동한다. 그렇지 않으면 1행이 있는 2차원 배열이 되어버린다.

 

예시를 하나 만들어 보았다. ( 구구단 )

#include <iostream>

int main()
{
	const int nSize1 = 10;
	const int nSize2 = 10;
	int arArray[nSize1][nSize2]{};
	int nMultiply{};


	for (int i = 1; i < nSize1; i++)
	{
		for (int j = 1; j < nSize2; j++)
		{
			arArray[i][j] = j;
			nMultiply = i * arArray[i][j];
			printf("%d * %d = %d\n", i, arArray[i][j], nMultiply);
		}
	}
}

 

참조 글 

https://boycoding.tistory.com/197

'예습' 카테고리의 다른 글

[예습] 10월 7일 예습  (1) 2024.10.08
[예습] 9월 30일 예습 정리  (0) 2024.10.01
[예습] 9월 23일 예습  (0) 2024.09.23
[예습] 9월 2일 예습  (0) 2024.09.02
[예습] 8월 26일 예습  (0) 2024.08.26