배열의 인덱스가 0번부터인 이유 - arr[0]
IT/공부자료

배열의 인덱스가 0번부터인 이유 - arr[0]

분명 손가락 1개, 2개 , 3개.. 이렇게 1번부터 시작이 자연스러운데

이제 갓 IT에 발을 들이기 시작한 프린이로한테 배열의 넘버링의 시작이 0번이라니!!

도통 이해할 수 없었습니다..

그래서 구글링을 통해  딱 이유를 두 가지로 간추려봤어요.

쉽게 설명했으니 꼭 따라오세요!!

 

첫 번째, 

현대 프로그래밍 언어에 뿌리를 내렸다고 할 수 있는 c언어를 살펴볼게요.

 

[어셈블리어 -> ...-> bcpl언어 -> b언어 -> c언어 ]

 

c언어도 개발된지 오래되었지만, c언어는 더 오래된 bcpl과 b언어를 기반으로 두고 있다고 합니다.

(b언어는 bcpl언어에서 문법만 바꾼 정도입니다.)

이 두 언어(bcpl,b)는 애초에 첫 인덱스의 넘버링을 0번부터로 개발이 되었다고 합니다

그래서 c언어도 마찬가지로, 배열 인덱스 넘버링의 첫 시작이 0번입니다!

 

 

두 번째,

 

여러분 수학개념에서 닫힌구간 [ ] 과 열린구간 ( ) 의 개념 기억하시나요?

열린구간,닫힌구간

사진에서 보듯이 4가지의 구간 개념이 존재합니다.

[a,b] , [a,b) , (a,b) , (a,b] 

 

이 개념을 숙지하고 예시를 보겠습니다.

 

문제 . 1부터 10까지 정수의 갯수는 몇개일까요? 

답. 네, 당연히 10개입니다.

 

 이 문제를 위의 개념을 이용해서 표현해본다면

 [1,10] 표현을 할 수 있습니다.

근데 이 문제를 계산할 때 10 - 1 해서 단순히 되는게 아니라  +1 을 따로해서 10 - 1 + 1 = 10 이란 결과에 이르게 됩니다.

 

깔끔하지가 않죠?

 

그러면 첫번째 또는 마지막 수를 포함하지 않는 반닫힘 구간 (1,10] or [1,10)  정수의 갯수를 구해본다면 10 - 1  = 10개로 떨어집니다.

 

방금 느끼셨듯이

구간을 표현할 때  가장 이상적인 구간은 반닫힘 구간입니다.

이걸 개발자분들도 아신거죠!

 

그래서 배열의 시작은 0번 부터입니다.

 

 

 

참고로 이 분의 포스팅에서 도움을 받았습니다.

nanite.tistory.com/56

 

오늘도 감사합니다^^

즐거운 하루 되세요~