본문 바로가기

Code.D IT 강좌/C언어

[C언어 강좌] 배열(1차원 배열, 2차원 배열, 3차원 배열)

C언어

배열(1차원 배열, 2차원 배열, 3차원 배열)



배열

배열이란 같은 자료형을 가진 연속된 메모리 공간으로 이루어진 자료구조입니다.

나란히 나열한 변수 여러 개를 하나로 묶어 놓은 것이 배열입니다.

배열의 시작은 0부터 시작합니다. 배열은 반복문과 함께 사용 가능합니다.

배열 선언 후 초기화해주지 않으면 쓰레기 값이 출력됩니다.



1차원 배열의 선언 형식

자료형    배열명    [배열 크기 = 배열 길이];

int array [10];



Ex)

int num0;

int num1;

int num2;

.

.

.

int num9;

위처럼 변수 여러 개(num0 ~ num9)를 하나로 묶어 주면,

int num[10]; 처럼 코드 한 줄로 나타낼 수 있습니다.

코드를 간결하게 표현할 수 있기에 배열을 사용합니다.

배열의 시작은 0부터 시작한다는 것도 잊지 마시기 바랍니다.



배열을 선언과 동시에 초기화하기 위해선 {}(중괄호)를 이용합니다.

중괄호 안에 데이터를 저장하는데, 저장하지 않은 배열 공간은 0으로 초기화됩니다.

1차원 배열의 예제를 한번 살펴보겠습니다.



#include <stdio.h>

int main(void){

     //선언과 동시에 초기화
     // {}(중괄호)를 이용해서 배열에 데이터 저장
     int array1[5]={90, 80, 70, 60, 50};
     
     int array2[5]={90, 80, 70};

     //array3는 길이가 5, 선언과 동시에 초기화
     int array3[]={90, 80, 70, 60, 50};
     
     printf("%d %d %d %d %d \n", array1[0], array1[1], array1[2], array1[3], array1[4]);

     printf("%d %d %d %d %d \n", array2[0], array2[1], array2[2], array2[3], array2[4]);
     //데이터를 저장하지 않은 배열 공간은 0으로 초기화 됩니다.

     printf("%d %d %d %d %d \n", array3[0], array3[1], array3[2], array3[3], array3[4]);

     return 0;

}



다음은 출력 결과입니다.






다차원 배열

2차원 이상의 배열을 다차원 배열이라고 합니다.

2차원 배열은 가로와 세로를 가진 평면적인 구조를 가지지만,

3차원 배열은 가로와 세로, 그리고 높이까지 가지는 입체적인 구조를 가집니다.

우선 2차원 배열부터 살펴보겠습니다.



2차원 배열

2차원 배열은 행과 열로 만들어진 배열입니다.

배열의 개수는 (행*열)입니다.

형식은 자료형 배열명 [행][열]; 입니다.

Ex)

int array[2][3];

2차원 배열의 개수는 (2*3=6)개 입니다.



#include <stdio.h>

int main(void){

     int array1[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9 , 10, 11, 12};
//     위의 코드를 아래와 같이 표현 가능
//     int array1[4][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}}

     int array2[4][3]={1, 2, 3, 4, 5};

//   int array3[4][]={1, 2, 3, 4, 5, 6, 7, 8, 9 , 10, 11, 12};
//   array[행][열]
//   열의 길이는 반드시 설정해야 한다 --> 설정하지 않으면 에러

     int array4[][3]={1, 2, 3, 4, 5, 6, 7, 8, 9 , 10, 11, 12};
     //행은 설정하지 않아도 에러가 나지 않는다
     
     //2차원배열 array1의 데이터를 출력
     printf("%d %d %d \n", array1[0][0], array1[0][1], array1[0][2]);
     printf("%d %d %d \n", array1[1][0], array1[1][1], array1[1][2]);
     printf("%d %d %d \n", array1[2][0], array1[2][1], array1[2][2]);
     printf("%d %d %d \n", array1[3][0], array1[3][1], array1[3][2]);

     //2차원배열 array2의 데이터를 출력
     printf("%d %d %d \n", array2[0][0], array2[0][1], array2[0][2]);
     printf("%d %d %d \n", array2[1][0], array2[1][1], array2[1][2]);
     printf("%d %d %d \n", array2[2][0], array2[2][1], array2[2][2]);
     printf("%d %d %d \n", array2[3][0], array2[3][1], array2[3][2]);

     //2차원배열 array4의 데이터를 출력
     printf("%d %d %d \n", array4[0][0], array4[0][1], array4[0][2]);
     printf("%d %d %d \n", array4[1][0], array4[1][1], array4[1][2]);
     printf("%d %d %d \n", array4[2][0], array4[2][1], array4[2][2]);
     printf("%d %d %d \n", array4[3][0], array4[3][1], array4[3][2]);

     return 0;

}



다음은 출력 결과입니다.






3차원 배열

2차원 배열의 요소에 [면]의 요소까지 추가로 가지는 배열입니다.

형식은 자료형 배열명 [면][행][열]; 입니다.

Ex)

int array[2][3][4];

예제를 살펴보겠습니다.



#include <stdio.h>

int main(void){

     int array[3][3][3]={
              {1, 2, 3, 4, 5, 6, 7, 8, 9}
              {10, 11, 12, 13, 14, 15, 16, 17, 18}
              {19, 20, 21, 22, 23, 24, 25, 26, 27}
     };

     int i, j, k;
     for(i=0; i<3; i++){
         for(j=0; j<3; j++){
              for(k=0; k<3; k++){

                  printf("%d", array[i][j][k]);

              }

              printf("\n");

         }

         printf("-------------- \n");

     }

     return 0;

}



다음은 출력 결과입니다.