더북(TheBook)

9.9 이박사와 함께 생각하는 C 언어: 배열은 왜 0부터 시작할까?

우리는 배열을 통해 다양한 자료를 연속적으로 저장할 수 있음을 배웠습니다. 배열 코드를 작성하다 보면 너무나 자연스럽게 0부터 시작합니다.

예를 들어 int a[3];이라고 배열을 선언하면 배열은 a[0], a[1], a[2] 세 개가 순서대로 구성되어 있다고 생각합니다.

그림 9-17 | 배열은 왜 0부터 시작할까

 

그렇다면 왜 배열의 시작은 1이 아닌 0부터 시작하는 걸까요? 이제부터 그 이유를 한번 알아보고자 합니다.

배열의 이름인 a는 곧 배열의 첫 번째 인덱스 a[0]의 주소 값을 의미합니다. 포인터 연산 관점에서 a는 배열의 첫 번째 메모리 주소 &a[0]을 의미하고, a+1은 배열의 두 번째 메모리 주소 &a[1]을 의미합니다.

만약 배열의 인덱스를 1부터 시작한다면 a+1&a[2]를 의미할 것입니다. 이렇게 하면 표현 방식의 통일성이 없기 때문에 코드의 가독성이 떨어질 뿐만 아니라, 오류를 일으킬 수도 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.