혹시 배열의 인덱스가 1이 아닌 0부터 시작하는 이유에 대해서 잘 아는가?
아마 많은 사람들이 당연하게 인덱스를 0부터 사용하면서 그 이유는 잘 모를 것이다
배열의 인덱스를 1이 아닌 0부터 사용하는 데에는 많은 이유가 있다지만, 그중에서 가장 중요하고 본질적인 이유는 바로 "메모리 주소 계산의 용이성"이다
배열은 메모리에서 연속적인 블록으로 할당된다. 배열의 첫 번째 요소의 주소를 기준으로 다른 요소의 주소를 계산할 때, 인덱스가 0부터 시작하면 포인터 산술이 간단해진다. 예를 한 번 들어보면, array[i]는 배열의 첫 번째 요소 주소에 i * 요소 크기를 더한 값과 같게 된다. 인덱스가 0부터 시작하면 첫 번째 요소의 주소에 0을 더하는 것이 되어 매우 직관적이게 된다.
C언어와 같은 초기 프로그래밍 언어들은 하드웨어와 매우 밀접하게 설계되었고, 직접 메모리 주소를 다루는 경우가 많았다. 앞배열의 인덱스를 0부터 시작하면 이러한 메모리 주소 계산이 간편해지고, 이는 언어 설계에 반영되었다. 이후 많은 다른 언어들이 C 언어의 영향을 받아 배열 인덱스를 0부터 시작하도록 설계되었다.
'기타 지식들' 카테고리의 다른 글
스트링 풀(String Pool, 문자열 풀) (1) | 2024.08.21 |
---|---|
스코프의 중요성 (0) | 2024.08.04 |
전역 변수의 일장일단 (0) | 2024.07.19 |
조건식 순서의 중요성 (단락 평가) (0) | 2024.07.19 |
오버플로우 방지 코드 작성법 4가지 (0) | 2024.07.05 |