배열의 집합, 2차원 배열
2차원 배열이란 쉽게 생각해서 '배열의 집합'이라 볼 수 있다.
✔ 2차원 배열의 선언
datatype 배열이름[행 수][열 수];
datatype 배열이름[행 수][열 수] = {
{값, 값, ...},
{값, 값, ...},
...
};
2차원 배열은 행, 열을 포함한다.
✔ 인덱스
배열을 만든 후, "인덱스"라고 불리는 행, 열의 위치를 지정해 배열 요소에 접근할 수 있다.
// 배열 요소 값 수정
배열이름[행 인덱스][열 인덱스] = 값;
// 배열 값 출력
printf("%d", 배열이름[행 인덱스][열 인덱스]);
📌 행의 개수를 지정하지 않는 2차원 배열 선언
int score[][3] = {
{ 30, 20, 45 },
{ 80, 85, 95 },
{ 100, 70, 90 },
{ 50, 70, 60 }
};
위의 예시는 행의 개수를 따로 지정해주지 않는다. 1차원 배열에서 배열의 크기를 따로 선언해주지 않고 자동으로 배열 크기를 정했던 것과 같이 2차원 배열에서도 행의 개수를 자동으로 지정할 수 있다.
BUT 열의 개수는 필수!
✔ 2차원 배열의 크기
python, Java 등에서는 len(), length()를 통해 배열의 크기를 구할 수 있다.
C언어는 조금 더 복잡하다.
int main(void)
{
int arr[4][3];
int row_len, col_len;
col_len = sizeof(arr[0]) / sizeof(arr[0][0]);
row_len = sizeof(arr) / sizeof(arr[0]);
printf("배열: %d행, %d열", row_len, col_len);
return 0;
}
- 열 (col_len)
col_len을 구하는 식을 보면 sizeof(arr[0]), 즉 한 행의 메모리 크기를 sizeof(arr[0][0]) 한 열에서 사용되는 메모리 크기로 나누어 계산한다.
- 행 (row_len)
총 몇 행인지는 전체 배열의 크기를 한 행의 크기로 나누어 계산할 수 있다.
👉 output
배열: 4행, 3열
⭐ 정리
✔ 2차원 배열: 여러 배열의 집합
✔ 인덱스: 배열 요소 접근
✔ sizeof(): 행, 열 크기 계산