지식 정리

왜 배열의 인덱스는 0부터 시작할까?

Unagi_zoso 2022. 6. 28. 01:13

왜 배열의 인덱스는 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/

 

 

 

부족한 부분이나 틀린 부분이 있다면 부디 알려주세요. 감사합니다.