Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

냥집사의 개발일지

C언어 - 다차원 배열(N dimensional array) 본문

C언어

C언어 - 다차원 배열(N dimensional array)

깅햄찌 2022. 9. 14. 20:40
반응형

안녕하세요 오늘은 C언어에서 다차원 배열의 선언 및 초기화에 대해 정리해보고자 합니다. 

 

1. 2차원 정수형 배열의 선언

아래 코드는 2차원 정수형 배열을 선언하고 모든 배열의 요소를 1로 초기화하고 출력까지 하는 예제입니다. 

다차원 배열의 선언 방법은 일차원 배열 선언 방법에 배열 연산자를 추가해주는 것인데요.

예를 들면 일차원 배열 : int arr[2];, 이차원 배열 : int arr[2][2];, 삼차원 배열 : int arr[2][2][2];

이런 식으로 배열을 선언할 수 있습니다. 

#include <stdio.h>

void print_arr(int arr[2][3]){
    int i,j;
    for(i=0; i<2; i++){
        for(j=0; j<3; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}

int main(){
    int two_dimensional_array[2][3];
    int i,j;

    for(i=0; i<2; i++){
        for(j=0; j<3; j++){
            two_dimensional_array[i][j] = 1;
        }
    }
    print_arr(two_dimensional_array);
    return 0;
}

2행 3열의 이차원 배열을 선언하고 각 요소에 1로 초기화해줬습니다. 

2. 2차원 정수형 배열의 초기화 방법

아래 코드에서 이차원 배열의 선언과 초기화를 동시에 해주었습니다. 

중괄호를 이용하여 배열의 초기화를 할 수 있었습니다. 

 

#include <stdio.h>

void print_arr(int arr[2][3]){
    int i,j;
    for(i=0; i<2; i++){
        for(j=0; j<3; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}

int main(){
    int two_dimensional_array[2][3] = {
        {1,2,3},
        {4,5,6}
    };
   
    print_arr(two_dimensional_array);
    return 0;
}

 

TIPS 배열 초기화 시 위의 코드처럼 모든 요소를 초기화하는 방법도 있지만 또 다른 방법도 정리해보겠습니다. 

 

1. 일부 초깃값이 생략 가능합니다!

 

#include <stdio.h>

void print_arr(int arr[2][3]){
    int i,j;
    for(i=0; i<2; i++){
        for(j=0; j<3; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}

int main(){
    int two_dimensional_array[2][3] = {
        {1},
        {4,5}
    };
   
    print_arr(two_dimensional_array);
    return 0;
}

1행 2열, 3열, 2행 3열의 요소는 생략되어 0으로 초기화되었음을 확인할 수 있었습니다. 

 

2. 행의 수가 생략 가능합니다!

컴파일러가 행의 수를 파악하여 배열을 선언합니다!

#include <stdio.h>

void print_arr(int arr[2][3]){
    int i,j;
    for(i=0; i<2; i++){
        for(j=0; j<3; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}

int main(){
    int two_dimensional_array[][3] = {
        {1,2,3},
        {4,5,6}
    };
   
    print_arr(two_dimensional_array);
    return 0;
}

행의 수를 생략했음에도 컴파일러는 2행 3열의 배열로 간주하였음을 확인할 수 있었습니다. 

 

3. 일차원 배열의 초기화 방식으로 다차원 배열 초기화가 가능합니다!

#include <stdio.h>

void print_arr(int arr[2][3]){
    int i,j;
    for(i=0; i<2; i++){
        for(j=0; j<3; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}

int main(){
    int two_dimensional_array[][3] = {1,2,3,4,5,6};
   
    print_arr(two_dimensional_array);
    return 0;
}

선언할 배열은 3개의 열과 6개의 요소를 가지고 있다는 사실을 파악한 컴파일러는 적절한 배열을 선언 및 초기화합니다. 

 

4. 초기화 시 남는 요소는 0으로 초기화됩니다!

#include <stdio.h>

void print_arr(int arr[2][3]){
    int i,j;
    for(i=0; i<2; i++){
        for(j=0; j<3; j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
}

int main(){
    int two_dimensional_array[2][3] = {1,2,3,4};
   
    print_arr(two_dimensional_array);
    return 0;
}

2행 3열의 배열 선언 뒤 4개의 요소만이 할당되었으므로 그 이후의 요소들은 0으로 초기화된 것을 확인할 수 있습니다!! 

 

오늘은 C언어에서 다차원 배열의 선언 및 초기화에 대해 알아보았습니다.

1. 2차원 정수형 배열의 선언

2. 2차원 정수형 배열의 다양한 초기화 방법

 

다음 포스팅 역시 다차원 배열 관련 포스팅으로 이어가겠습니다~

좋은 하루 보내세요~

Comments