Index Bounds

다차원 배열은 차원마다 범위를 따로 지킨다

`matrix[행][열]`에서 행과 열 중 하나라도 유효 범위를 벗어나면 배열 바깥 메모리에 접근합니다.

행 범위 0부터 rows - 1
열 범위 0부터 cols - 1
루프 조건 `<` 크기 비교 사용
int matrix[3][4]

접근 가능한 칸은 3행 4열 안쪽

for (int r = 0; r < 3; ++r) { for (int c = 0; c < 4; ++c) { ... } }
row 0 [0][0] [0][1] [0][2] [0][3]
row 1 [1][0] [1][1] [1][2] [1][3]
row 2 [2][0] [2][1] [2][2] [2][3]
가능

`matrix[1][1]`

행 1은 0~2 안에 있고, 열 1은 0~3 안에 있으므로 정상적인 요소 접근입니다.

범위 초과

`matrix[3][0]`

행 인덱스 3은 네 번째 행을 뜻하지만, 선언된 행은 0, 1, 2까지만 있습니다.

범위 초과

`matrix[1][4]`

열 인덱스 4는 다섯 번째 열을 뜻하지만, 한 행의 열은 0부터 3까지입니다.

1. 선언 크기 읽기

`[3][4]`는 행 3개와 열 4개를 의미합니다.

2. 마지막 인덱스 계산

마지막 행은 2, 마지막 열은 3입니다.

3. 중첩 루프 분리

바깥 루프는 행 크기, 안쪽 루프는 열 크기를 씁니다.