C 언어 - 다차원 배열

컴퓨터/C

728x90
반응형

배열의 묶음 - 다차원 배열

배열이 탄생하게 된 배경은 변수들을 묶어서 편리하게 접근하고 사용하기 위해서 탄생된 개념이라고 말했습니다.

이런 배열들을 묶어서 편리하게 사용하는 개념을 다차원 배열이라고 부르고 있습니다.  이런 개념들을 적용하면 다음과 같은 추상적인 개념을 규현을 하는데 조금 더 용의합니다.

  • 2차원 - 2차원 배열을 이용한 면형태의 구현
  • 3차원 - 3차원 배열을 이용한 입체적 형태의 구현 

물론 이런 추상적인 개념을 적용을 하는 자유도는 사용자 본인에게 있습니다.

본문에서는 2차원 배열에 대하여 알아보도록 하겠습니다.

 

2차원 배열의 선언과 사용

2차원 배열은 배열을 묶은 형태라고 생각하면 됩니다.

int a1[2];
int a2[2];
int a3[2];
int a4[2];

이제 이 배열을 2차원 배열로 묶어 보도록 하겠습니다.

int a[4][2];

그림으로 표현하면 아래오 같습니다.

 

1차원 배열을 묶음으로 불필요한 변수명을 줄일수 있고 하나의 2차원 배열명으로 추상적인 면의 형태를 구현할 수 있습니다.

 

배열의 초기화

배열의 초기화는 각각의 구역마다 중괄호 {}와 ,로 구분을 해 줍니다. 다음과 같습니다.

int a[4][2] = {
			{1,2},
    			{3,4},
    			{5,6},
    			{7,8}
};

전체를 0으로 초기화

int[4][2] = {0,}

이런식으로 초기화를 하여 배열을 활용할 수 있습니다.

 

 

다차원 배열은 추상적인 개념이다.

다차원 배열은 추상적인 개념입니다. 위의 예제의 배열은 총 8개의 int형 변수의 묶음입니다. 우리가 보기 쉽게 하기위해서 면의 형태로 구현을 한 것뿐이지 실제 메모리 구조는 면의 형태가 아니기 때문에 순차적으로 만들어 집니다.

물론 이 내용을 모르고 있어도 상관은 없습니다. 하지만 메모리위에 다양한 변수 데이터들이 어떻게 저장되는지 정확하게 이해하고 있어야만 프로그래밍을 하기 위해 만들어진 다양한 개념들을 이해하고 사용하는데 쉽습니다. 

각각의 배열 인덱스의 주소를 찾아가서 한번 확인해 보도록 하겠습니다.

#include<stdio.h>
int main()
{
    int a[4][2] = {0,};
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 2; j++)
            printf("메모리 주소 a[%d][%d] : %p\n",i,j, &a[i][j]);
    }
    return 0;
}

int형 자료형이므로 배열은 4바이트 크기로 순차적으로 저장되어 사용하는 것을 확인 할 수 있습니다.

 

 

728x90
반응형

'컴퓨터 > C' 카테고리의 다른 글

C 언어 - 형변환(Casting)  (0) 2021.06.17
C 언어 - 오버플로우와 언더플로우  (0) 2021.06.16
C 언어 - 포인터 / 포인터 변수  (0) 2021.06.13
C 언어 - 메모리주소  (0) 2021.06.12
C 언어 - 배열과 문자열  (0) 2021.06.09

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :