jam 블로그

[C] 16. 다차원 배열 본문

개발 및 관련 자료/C

[C] 16. 다차원 배열

kid1412 2013. 5. 12. 19:37
728x90

I. 다차원 배열

  • 2차원 배열의 선언

    • 2차원 배열의 선언과 의미
    • 1차원 배열

    • 2차원 배열

    • 가로가 열 세로가 행을 가리킨다.

      • 자료형 배열이름[행][열]; 이런식으로 선언하면 된다.
  • 실제 메모리상의 그림

    • 위와 같은 그림 처럼 메모리에 잡힌다.

 

  • 2차원 배열! 선언과 동시에 초기화 (여기서 부터는 그림 귀찮아서 안 그립니다.)

    • 초기화 case 1: 행 단위로 모든 요소들을 초기화 하는 경우
  1.  int main()
    {
     int somang[3][3]=
     {
      {1,2,3},{4,5,6},{7,8,9}
     };
    }
  • 위와 같이 배열의 개수 만큼 써서 초기화를 해주면 된다. {} 당 한 행으로 보면 된다.

 

  • 초기화 case 2: 행 단위로 일부 요소들만 초기화하는 경우
  1.  int main()
    {
     int somang[3][3]=
     {
      {1},{4,5},{7,8,9}
     };
    }
  • 위와 같이 초기화 할경우 첫째행에 들어가는 수는 1,0,0 이 들어간다. 부족한 부분은 0으로 채워진다.

 

  •  초기화 case 3: 1차원 배열 초기화 형태를 취하는 경우

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

  • 위와 같이 하면 1~7까지 들어가고 나머지 0이 들어간다.

 

  • 배열의 크기를 알려주지 않고 초기화 하기

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

 

  • 위와 같이 하면 2*4 행렬 또는 4*2 행렬 1*8 8*1행렬등 어떤식인지 컴터가 몰라 오류가 난다. 다음과 같이 둘중 하나는 알려줘야 한다.

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

 

II. 3차원 그 이상의 배열!

여기서는 별로 설명을 안하겠다.

  • 3차원 이상의 배열은 거의 사용 안한다.
  • 2차원배열을 행렬로 생각하고 3차원 행렬은 큐브 모양으로 되어 있다고 생각하면 쉬울 것이다.

 

문제

16 -1

문제 1

3*9 int형 2차원배열을 선언하자 그리고 그 안에 구구단의 결과를 4단까지 저장하자 제대로 저장되었음을 확인하기 위해서 출력해 보자

 

문제2

A는 2*4 int형 배열이다. 1~8까지로 초기화 시킨 다음 4*2형태로 바꾸고 A에 있는 값으로 초기화 시키자.

Comments