왜 배열의 인덱스는 0부터 시작할까?
왜 배열의 인덱스는 0부터 시작할까?
궁금하여 인터넷에 찾아보았는데, 이유는 정말 다양했습니다.
그 중에서도 가장 납득할 수 있었던 이유는
" 배열에서의 임의접근을 위한 포인터연산. "
배열에서는 임의접근을 하기 위하여 자료형의 크기와 떨어진 거리를 곱하고 그 값을 배열의 시작번지에 더함으로
임의접근을 위한 인덱스의 주소를 얻어옵니다.
이러한 떨어짐을 이야기할 때 시작하는 번지를 어떻게 표현하면 가장 말이 될까 생각해보면,
저는 시작번지로부터 0만큼 떨어진 위치라고 생각합니다.
이를 다른 인덱스로 표현을 하자면 1인덱스의 경우 시작번지로부터 1만큼 떨어진, 2인덱스의 경우 2만큼 떨어진. 이라
할 수 있습니다.
그리고 이러한 0-index는 임의접근을 위해 포인터연산을 하는 컴파일러의 입장에서도
작업을 줄여주는데 한 몫을 합니다.
만약 arr[ i ]에 임의접근을 시도한다면
1-index 의 경우
*( arr + i - 1)
0-index 의 경우
*( arr + i)
같은 포인터연산으로 접근할 수 있습니다. 1-index 때 발생하는 1을 뺀다는 행위가 좋지 않아
0-index에 비해 연산작업을 조금 더 어렵게합니다.
이외에도 다양한 이유가 있었지만 가장 납득할 수 있었던 이유를 정리하였습니다.
다음 글을 참고하였습니다.
https://developerinsider.co/why-does-the-indexing-of-array-start-with-zero-in-c/
https://www.geeksforgeeks.org/why-array-index-starts-from-zero/
부족한 부분이나 틀린 부분이 있다면 부디 알려주세요. 감사합니다.