프로그래밍 언어를 배우다 보면 배열의 인덱스가 0부터 시작하는 것에 자연스럽게 익숙해지는데, 이는 단순한 전통을 넘어 깊은 기술적 배경이 숨어 있기 때문입니다. 이번 포스트에서는 C언어에서 배열 인덱스가 0부터 시작하는 이유와 이를 뒷받침하는 메모리 모델, 포인터 산술의 개념에 대해 자세히 살펴보겠습니다.1. 배열 인덱싱의 기원0 기반 인덱싱의 역사C와 같은 저수준 언어에서는 배열의 첫 번째 요소가 배열의 기본 메모리 주소(base address)에 대응합니다. 이는 배열 인덱스가 0부터 시작하도록 만든 결정적인 설계 요소입니다. 배열의 (i)번째 요소는 다음과 같이 접근됩니다.$$ \texttt{A[i]} = \ast (\texttt{base address} + i) $$여기서 첫 번째 요소는 0 오..