본문 바로가기
온라인 멘토와 함께하는 공부/인공지능

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

by 열공노년 2023. 10. 27.
반응형

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

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

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

#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]과 같은 형태를 취합니다.

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

달리 그림

반응형