Storing Elements in a Row

Contiguous Storage


같은 크기의 칸이 이어져 있으면 첫 주소와 칸 번호만으로 어느 원소의 주소든 계산할 수 있다. 경계를 벗어난 주소도 계산되지만 배열 원소가 되지는 않는다.

연속 저장같은 크기의 칸이 메모리에서 바로 이어진다.
주소 계산addr(i) = base + i × size다.
유효 범위원소가 6개면 0 ≤ i < 6이다.

주소는 base + i × size로 한 번에 계산한다

마커의 위치, 기준 주소, 칸 크기가 하나의 주소 식을 만든다. 양끝의 점선 칸은 계산 가능한 주소와 유효한 원소를 구분한다.

주소 식

1000 + 3 × 8 = 1024

첫 칸에서 3칸, 24바이트 떨어져 있다.

경계 판정

0 ≤ 3 < 6

유효한 원소 58을 가리킨다.

점선 칸은 계산은 되지만 배열 경계 밖인 주소다. 초록 테두리 판정 카드는 유효한 원소, 빨간 테두리는 경계 밖이다.

주소 계산과 경계 검사는 별개의 일이다. 식은 범위 밖 주소도 만들지만 공개된 배열 원소는 0부터 5까지만 존재한다.

0 기반 인덱스는 첫 칸에서 떨어진 칸 수다

위 절의 base, size, i를 그대로 쓴다. 같은 물리적 칸을 두 번호 체계로 나타내면 0 기반 인덱스는 첫 칸에서 떨어진 칸 수와 같다.

0 기반 인덱스

i = 3

base + 3 × size

1 기반 순서

4번째 칸

base + (4 − 1) × size

0 기반 인덱스는 보정 없이 곧바로 칸의 거리로 쓰인다. 1 기반 순서는 1을 빼야 같은 주소에 도달한다.