Array Decay
배열 이름은 상황에 따라 첫 요소 포인터가 되거나 배열 자체로 남는다
포인터 산술에서 중요한 것은 주소값 자체가 아니라 한 칸 이동의 단위가 `int`인지 `int[3]`인지 구분하는 것이다.
타입 렌즈
matrix[0]
첫 행의 첫 요소 포인터처럼 동작
한 칸 이동 단위는 `int` 하나다.
matrix
행 배열을 가리키는 포인터처럼 동작
한 칸 이동 단위는 `int[3]` 한 행이다.
&matrix
전체 2차원 배열의 주소
한 칸 이동은 배열 전체 크기만큼 뛴다.
sizeof(matrix)
배열 자체 크기 유지
함수 인자로 넘기기 전에는 전체 크기를 안다.
2 x 3 메모리
r0 c01
r0 c12
r0 c23
r1 c04
r1 c15
r1 c26
`matrix[0] + 1`은 같은 행의 다음 열이고, `matrix + 1`은 다음 행의
시작 위치다.
| 표현 | 읽는 타입 | 한 칸 이동 | 주의점 |
|---|---|---|---|
matrix[0] + 1 |
int* |
열 하나 | [0][1] 위치 |
matrix + 1 |
int (*)[3] |
행 하나 | [1][0] 행 시작 |
&matrix + 1 |
전체 배열 포인터 | 배열 전체 | 실제 원소 접근용이 아님 |