728x90
반응형
다차원 배열
다차원 배열은 2차원 이상의 배열을 말한다.
2차원, 3차원, 4차원 ...
C언어는 4차원 이상의 배열도 문법적으로는 허용한다.
그러나 4차원 이상의 배열은 불필요하고 논리적으로 이해하기도 힘들기 때문에
다차원 배열은 2, 3차원 배열을 말하는 것으로 이해하는 것이 좋다.
선언 방법은 다음과 같다.
자료형 배열명[세로][가로]; //2차원 배열
자료형 배열명[세로][가로][높이]; //3차원 배열
1차원 배열 선언 시에는 []안의 수가 요소의 수를 의미했지만
다차원 배열에서는 순서대로 세로, 가로, 높이를 의미한다.
2차원 배열은 면으로, 3차원 배열은 직육면체 개념으로 생각하면 이해가 쉽다.
그렇다면 실제 메모리에도 면, 직육면체 형태로 할당되어 있을까?
메모리는 1차원 구조이기 때문에 실제로는 1차원 형태로 저장되어 있다.
2차원 int형 배열 arr[2][2]가 메모리에 저장된 모습은 아래와 같다.
왼쪽의 숫자는 메모리의 주소이다. int형 배열이므로 각 배열의 요소가 4byte씩을 차지한다.
2차원 배열 arr는 메모리 상에서는 위와 같이 1차원의 형태로 나란히 저장된다.
다차원 배열의 크기를 sizeof를 통해 구하면
가로*세로*배열의 타입 을 전부 곱한 것이 배열의 크기가 된다.
728x90
반응형
'C' 카테고리의 다른 글
포인터 배열과 포인터 배열의 포인터 형 (1) | 2022.09.23 |
---|---|
이중 포인터 (0) | 2022.09.22 |
C 공부 12일차 Chapter 14 포인터 대상 const 선언의 두가지 형태 (0) | 2022.09.17 |
C 공부 11일차 Chapter 14 함수 호출 방식 Call-by-value, Call-by-reference (2) | 2022.09.16 |
C 공부 10일차 Chapter 14 함수와 포인터 (0) | 2022.09.15 |