Array는 2가지 요소로 표현할 수 있다.
1. 메모리에서 Array의 시작주소
2. Array에 저장되는 item의 자료형 크기
Array는 포인터이다.
포인터 : 컴퓨터 메모리의 주소를 가리킨다.
16진수 형태로 메모리 주소값을 가리킨다.
int[] arr = {1,2,3,4,5};
// 메모리에 연속적으로 4byte씩 차지하게 된다.
// 참조주소 = 시작주소 + 자료형의크기 * 인덱스 (오프셋)
// 참조주소: 1024+4*0, 1024+4*1, 1024+4*2...
// 즉, 인덱스가 0부터 시작하면 인덱스와 오프셋이 일치하게 된다.
// 프로그래밍 언어가 연산하기 쉽고, 컴파일 속도가 향상되기 때문이다.
Array의 길이, 사이즈가 아무리커도 똑같은 속도로 각인덱스의 item을 가져올 수 있다. O(1)
해당 인덱스에 존재하는 item을 가져오기 위해 참조주소의 값을 인덱스를 통해 1번만 연산하면 바로 접근이 가능하다.
이를 통해 Hash가 등장한다.