C Language [핵심정리] - 15
1. 2차원 배열 사용하기 - 2
2차원 배열의 요소를 초기화 하는 방법은 다음과 같습니다.
2차원 배열의 요소에 값을 할당하는 방법은 다음과 같습니다.
이처럼 1차원 배열과 2차원 배열은 초기화 하거나 인덱스로 접근하는 등 동일하다고 봐도 될 만큼 유사한 면이 많습니다.
2차원 배열의 크기를 구하는 법은 다음과 같습니다.
그전에 1차원 배열은 단일 포인터에 넣을 수 있다고 말씀드렸죠. 그러면 2차원 배열은 이중포인터에 넣을 수 있지 않을까요?
어라..? 간접 참조 수준이 다르다는 경고가 뜨네요. 실행해보면
numPtr[0][0]의 값이 출력되지 않습니다. 그래서 2차원 배열을 포인터에 담으려면 특별한 방법이 필요합니다.
즉, 포인터를 선언할 때 *(Asterisk)과 포인터명을 괄호로 묶어준 뒤 [ ](대괄호)에 가로 크기를 지정합니다.
풀어서 설명하면 가로 크기가 3인 배열을 가리키는 포인터라는 뜻입니다. 포인터의 위치는 전까지 세로 크기 위치한 곳이기 때문에 세로 위치(1차원 배열)만을 대체 했다 라고 말할 수 있습니다. 그러니까 해당 위치에는 이중 포인터가 아닌 단일 포인터가 들어갑니다.
+ int *numPtr[4]
int (*numPtr)[4]에서 괄호를 삭제한 int *numPtr[4]는 int 형 포인터 4개를 담을 수 있는 배열이라는 뜻입니다. 즉, 괄호가 있으면 배열을 가리키는 포인터, 없으면 포인터를 여러 개 담는 포인터 배열입니다.