Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 2차원 배열을 함수 매개변수로 전달하는 방법

C 언어에서 2차원 배열은 함수의 매개변수로 손쉽게 전달할 수 있습니다. 다만 배열을 전달할 때는 컴파일러가 메모리 주소를 정확하게 계산할 수 있도록 열(column)의 크기를 반드시 명시해야 한다는 점에 유의해야 합니다.

아래 예제는 행(row)과 열(column)의 크기가 모두 전역 상수로 선언되어 있을 때, 2차원 배열을 함수에 전달하여 각 요소의 값을 수정하는 방법을 보여줍니다.

예제

#include <stdio.h>
const int R = 4;
const int C = 3;
void func(int a[R][C]) {
    int i, j;
    for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
    a[i][j] += 5;
}
int main() {
    int a[R][C];
    int i, j;
    for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
    a[i][j] = i+j;
    printf("Initial 2-D array is:\n");
    for (i = 0; i < R; i++) {
        for (j = 0; j < C; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    func(a);
    printf("Modified 2-D array is:\n");
    for (i = 0; i < R; i++) {
        for (j = 0; j < C; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

출력 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Initial 2-D array is:
0 1 2
1 2 3
2 3 4
3 4 5
Modified 2-D array is:
5 6 7
6 7 8
7 8 9
8 9 10

코드 설명

1. 전역 상수 선언: R(행 개수)과 C(열 개수)를 전역 상수로 선언하여 함수와 main()에서 모두 동일한 크기를 사용할 수 있도록 합니다.

2. 배열 초기화: main() 함수에서 이중 반복문을 사용해 각 요소를 i + j 값으로 초기화합니다.

3. 함수 호출: func(a)처럼 배열 이름만 인자로 넘기면 됩니다. C에서 배열 이름은 첫 번째 요소의 주소를 가리키므로, 함수 내부에서 수행한 변경 사항(a[i][j] += 5)이 원본 배열에 그대로 반영됩니다. 즉, 배열은 참조(call by reference) 방식으로 전달됩니다.

4. 결과 확인: 함수 호출 후 배열을 다시 출력하면 모든 요소가 5씩 증가한 것을 확인할 수 있습니다.