왜 배열의 인덱스는 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/
부족한 부분이나 틀린 부분이 있다면 부디 알려주세요. 감사합니다.
'지식 정리' 카테고리의 다른 글
patrikx/p3x-redis-ui로 레디스 데이터 접근하기 (docker) (1) | 2023.11.25 |
---|---|
[Intellij] Intellij에서 git bash 터미널로 설정하기 (0) | 2023.06.02 |
c++) regex_replace (0) | 2022.05.27 |
[UML] 클래스 다이어그램 (설명, 용어) (0) | 2022.05.20 |
c++에서의 NULL과 nullptr (0) | 2022.04.29 |
댓글