C 함수 포인터 매개변수 - sonkoni/Koni-Wiki GitHub Wiki

함수포인터를 함수의 매개변수로 사용하기

== 선언 ==
반환값자료형 함수이름(함수포인터반환값자료형 (*함수포인터이름)(함수포인터매개변수자료형1, 함수포인터매개변수자료형2, ...), ...) {...함수구현...}
                =====================================================================
                                     함수의 매개변수로서 함수포인터

== typedef 처리 ==
typedef 반환값자료형 (*함수포인터별칭)(매개변수자료형1, 매개변수자료형2, ...);
반환값자료형 함수이름(함수포인터별칭 매개변수, ...) {...함수구현...}

매개변수 함수포인터

#include <stdio.h>

int Add(int a, int b) {
    return a + b;
}
//              ┌▶ 함수포인터로 된 매개변수
//        ══════╧════════════
void Exec(int (*fp)(int, int), int a, int b) {
    printf("=> %d\n", fp(a, b));
};

int main(int argc, char *argv[]) {
    Exec(Add, 10, 5);
    return 0;
}
// => 15

typedef 처리

대부분 typedef 처리를 한다. 이렇게 안 쓰면 지저분해서 코드를 읽기가 힘들기 때문이다.

#include <stdio.h>

typedef int (*CalcFunc)(int, int);

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

void Exec(CalcFunc fp, int a, int b) {
    printf("=> %d\n", fp(a, b));
};

int main(int argc, char *argv[]) {
    Exec(Add, 10, 5);
    return 0;
}
⚠️ **GitHub.com Fallback** ⚠️