/ C, PROGRAMMING, DATASTRUCTURE

C언어: 다차원 배열의 심화 해석

2차원 배열을 예로 들면, 첫번째 차원은 배열 포인터로 해석 가능하다.

ex) int arr[3][4] 가 있으면

arr는 4칸짜리 int 배열들을 가리키는 배열 포인터의 배열이다.

*(arr+i) 에서 i는 첫번째 차원의 index에 해당한다.

결과는 arr[i](정확히는 &arr[i]), 즉 4칸짜리 배열 3개(0~2번째)중 i번째의 주소다.

따라서 배열 요소를 이렇게 접근할 수도 있다.

arr[m][n] == *(*(arr+m)+n)

기술적으로 정확한 해석

arr -> int (*) [n] 형을 가지는 배열 포인터 반환

arr[0] -> 첫 번째 배열 포인터가 가리키는 int형 배열이 int* 형을 가지는 포인터로 decay된다.

arr[0]arr이라는 2차원 배열의 0번째 행이라는 1차원 배열의 포인터를 전달한다.

2차원 배열을 이용한 문자열들의 배열

2차원 배열은 기본적으로 ‘배열들의 배열’이다. 따라서, 문자열들의 배열로 활용 가능하다

Ex)

char planets[][8] = {"Mercury", "Venus", "Earth",
"Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};