배열 이름은 많은 식에서 첫 요소 주소처럼 해석된다
배열 원소는 연속된 메모리에 놓입니다. 그래서 배열 이름은 식 안에서 첫 요소 주소로 변환될 수 있지만, 배열 자체의 크기와 포인터 변수는 같은 개념이 아닙니다.
인덱스
arr[0]
arr[1]
arr[2]
arr[3]
arr[4]
값
10
20
30
40
50
주소
&arr[0]
&arr[1]
&arr[2]
&arr[3]
&arr[4]
식에서의 배열 이름
arr == &arr[0]많은 식 문맥에서 첫 요소 주소로 변환됩니다.포인터 산술
arr + 1주소값에 1바이트를 더하는 것이 아니라 다음 int 요소로 이동합니다.함수 인자
void f(int a[])매개변수 안에서는 배열 길이 정보가 사라져 포인터처럼 다뤄집니다.배열과 포인터를 함께 읽을 때는 “첫 요소 주소”, “전체 배열 크기”, “길이 책임”을 분리해서 봅니다.