온라인 멘토와 함께하는 공부/인공지능

[C언어] 포인터 배열과 배열 포인터를 함수 인자로 넘기는 예시

열공노년 2023. 10. 27. 03:58
반응형

포인터 배열과 배열 포인터를 함수 인자로 넘기는 예시

포인터 배열을 함수 인자로 넘기기

포인터 배열을 함수에 넘길 때는 포인터의 배열이라는 것을 명확하게 해주어야 합니다. 아래 예시를 참고하시면 됩니다.

#include <stdio.h>

void printPointerArray(int *arr[], int size) {
    for (int i = 0; i < size; ++i) {
        printf("%d ", *arr[i]);
    }
    printf("\n");
}

int main() {
    int a = 1, b = 2, c = 3;
    int *ptrArray[3] = {&a, &b, &c};

    printPointerArray(ptrArray, 3);

    return 0;
}

배열 포인터를 함수 인자로 넘기기

배열 포인터를 함수 인자로 넘길 때는 배열의 크기도 함께 지정해야 합니다. 아래는 예시 코드입니다.

#include <stdio.h>

void printArrayPointer(int (*arrPtr)[3], int rows) {
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < 3; ++j) {
            printf("%d ", arrPtr[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int arr[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    printArrayPointer(arr, 2);

    return 0;
}

주요 차이점

  • 포인터 배열: 각 배열 요소가 포인터입니다. 따라서 함수 매개변수는 int *arr[]와 같은 형태를 취합니다.
  • 배열 포인터: 포인터가 배열을 가리킵니다. 따라서 함수 매개변수는 int (*arrPtr)[3]과 같은 형태를 취합니다.

이 두 가지는 종종 혼동되기 쉽지만, 선언 방식과 사용 방식을 통해 구분할 수 있습니다. 함수의 매개변수로 어떻게 넘기는지를 이해하는 것은 이 구분을 명확히 하는 데 도움이 됩니다.

달리 그림

반응형