본문 바로가기
C언어

[C언어] 2차원 배열 파라미터(매개변수)로 넘기기

디지털노마드 2023. 2. 14.
반응형

C언어에서 가장 다루기 까다로운 것중에 하나가 2차원 배열이다. 

만들때는 쉽게 만들지만, 이곳 저곳으로 넘기다 보면

이게 지금 포인터인지 함수인지 데이터값인지 헷갈리기 시작하고 에러도 많이 난다. 

 

여러가지 string 으로 되어 있는 2차원 배열을 

다른 함수로 넘기는 방법을 알아보자. 

 

char* string_table[4][2] = {
    {"this is one", "this is two"},
    {"this is three", "this is four"},
    {"this is five", "this is six"},
    {"this is seven", "this is eight"}
};

 

2차원 배열의 정의는 이렇게 하면 된다. 

이 예제는 [4][2] 로 만들어진 배열에 각각 문자열, string 이 들어가 있는 형태이다. 

각각의 문자열을 출력하는 함수를 만들것이다. 

 

void main(){

    for(int i = 0; i < 4; i++){
        for(int j = 0; j < 2; j++){
            print_string_table(string_table, i, j);
        }
    }
}

 

main 에서 이런시긍로 print_string_table 이란 함수를 사용하고

3개의 파라미터를 넣어준다. 로데이터 대상이 되는 array (string_table), 그리고 각 배열을 뜻하는 숫자 2개(i, j)이다.

 

void print_string_table(char* array[][2], int num, int num2){
    printf("%s\n", array[num][num2]);
}

 

결론적으로는 이런식으로 함수를 만들어 주면 된다. 

파라미터를 char* array[][2] 와 같은 모양으로 받았는데, char* array[4][2] 처럼 사용해도 무관하다. 

사실 앞쪽은 어떤 수를 써도 상관이 없다고 한다. 

이차원 배열에서 갑자기 이상한 문법이 나오기도 하지만, 

일단 이해가 되면 이해를, 안되면 외워서 써야 한다. ㅋㅋㅋ

나는 외워서 쓴다. 

반응형

댓글