[c언어] 함수 포인터와 다중 포인터

C 언어에서 포인터는 메모리의 주소를 저장하는 변수이며, 함수 포인터와 다중 포인터는 포인터의 특수한 형태입니다. 이 포스트에서는 함수 포인터와 다중 포인터에 대해 자세히 알아보겠습니다.

함수 포인터

함수 포인터는 다른 함수의 주소를 저장하는 포인터입니다. 이를 사용하여 함수를 가리키는 변수를 선언하고 이 변수를 통해 함수를 호출할 수 있습니다.

함수 포인터를 선언하는 방법은 다음과 같습니다.

반환_데이터_타입 (*포인터_이름)(매개변수_타입);

예를 들어, 정수를 매개변수로 받고 정수를 반환하는 함수를 가리키는 함수 포인터는 다음과 같이 선언할 수 있습니다.

int (*ptr)(int);

함수 포인터를 사용하여 함수를 호출하는 방법은 다음과 같습니다.

int add(int a, int b) {
    return a + b;
}

int main() {
    int (*ptr)(int, int);
    ptr = &add;
    
    int result = ptr(3, 5);  // result에는 8이 저장됨
}

함수 포인터를 사용하면 함수를 동적으로 호출할 수 있으며, 콜백 함수나 함수 포인터 배열 등의 여러 상황에서 유용하게 활용될 수 있습니다.

다중 포인터

다중 포인터는 포인터를 가리키는 포인터를 의미합니다. 이중 포인터, 삼중 포인터와 같이 여러 단계의 간접 참조를 의미합니다.

예를 들어, int형 데이터를 가리키는 이중 포인터는 다음과 같이 선언할 수 있습니다.

int** ptr;

다중 포인터는 메모리 주소를 여러 단계로 간접 참조할 수 있으며, 배열이나 포인터의 동적 할당 및 다차원 배열 등을 다룰 때 유용하게 사용됩니다.

함수 포인터와 다중 포인터는 C 프로그래밍에서 강력한 기능을 제공하며, 적재적소에 활용하여 효율적인 코드를 작성할 수 있습니다.