본문 바로가기
IT/c언어

C언어 함수 포인터

by 뉴코딩맨 2023. 7. 14.
함수 포인터(Function Pointer)는 함수를 가리키는 포인터로, 다른 데이터 타입과 마찬가지로 메모리 주소를 저장하고 함수를 호출할 수 있는 변수입니다. 함수 포인터는 C언어의 강력한 기능 중 하나로, 동적인 함수 호출이 가능하게 합니다.

 

 

함수 포인터의 선언과 사용

함수 포인터는 함수의 반환 타입과 매개변수 타입을 정확하게 일치시켜야 합니다. 아래는 함수 포인터의 선언과 사용 예제입니다.
 
#include <stdio.h>

// 더하기 함수
int add(int a, int b) {
    return a + b;
}

// 곱하기 함수
int multiply(int a, int b) {
    return a * b;
}

int main() {
    // 함수 포인터 선언
    int (*funcPtr)(int, int);

    // 더하기 함수를 가리키도록 설정
    funcPtr = add;

    // 함수 포인터를 이용하여 함수 호출
    int result = funcPtr(3, 4);
    printf("더하기 결과: %d\n", result);

    // 곱하기 함수를 가리키도록 변경
    funcPtr = multiply;

    // 함수 포인터를 이용하여 함수 호출
    result = funcPtr(3, 4);
    printf("곱하기 결과: %d\n", result);

    return 0;
}
 
위의 예제에서는 add와 multiply라는 두 개의 함수를 정의합니다. 그리고 funcPtr이라는 함수 포인터를 선언합니다. 이후 funcPtr을 통해 함수를 가리키도록 설정하고, 함수 포인터를 이용하여 함수를 호출합니다.
 
 

예제와 설명

위의 예제를 실행하면 다음과 같은 결과가 출력됩니다.
 
더하기 결과: 7
곱하기 결과: 12
 
첫 번째 함수 호출에서는 funcPtr이 add 함수를 가리키고 있으므로, add(3, 4)가 호출되어 7이 출력됩니다. 두 번째 함수 호출에서는 funcPtr이 multiply 함수를 가리키도록 변경되었으므로, multiply(3, 4)가 호출되어 12가 출력됩니다.
 
함수 포인터를 이용하면 프로그램 실행 중에 원하는 함수를 동적으로 선택하여 호출할 수 있습니다. 이는 함수의 다형성을 구현하거나, 콜백 함수 등의 기능을 구현하는 데에 유용하게 사용됩니다.
 

결론

C언어에서 함수 포인터는 함수를 가리키는 포인터로, 동적인 함수 호출이 가능하게 합니다. 함수 포인터를 선언하고 사용하여 프로그램 실행 중에 원하는 함수를 선택하여 호출할 수 있습니다. 이를 통해 다형성이나 콜백 함수 등의 유연한 기능을 구현할 수 있습니다. 함수 포인터는 C언어의 중요한 개념 중 하나이므로, 이를 이해하고 활용하는 것이 필요합니다.
 

 

'IT > c언어' 카테고리의 다른 글

C 언어 2차원 배열 포인터  (0) 2023.07.15
C언어 void 포인터  (0) 2023.07.14
C언어 이중포인터  (0) 2023.07.14
C언어 3차원 배열  (0) 2023.07.14
C언어 2차원 배열  (0) 2023.07.14

댓글