728x90

1. 직접 호출

void myFunction() {
    // 함수의 내용
}

int main() {
    myFunction(); // 함수 호출
    return 0;
}

 

2. 함수 포인터를 사용한 호출

void myFunction() {
    // 함수의 내용
}

int main() {
    void (*funcPtr)() = myFunction; // 함수 포인터 선언 및 초기화
    funcPtr(); // 함수 포인터를 통한 호출
    return 0;
}

 

3. 배열에 함수 포인터 저장

void functionA() { /*...*/ }
void functionB() { /*...*/ }

int main() {
    void (*funcArray[2])() = {functionA, functionB}; // 함수 포인터 배열
    funcArray[0](); // functionA 호출
    funcArray[1](); // functionB 호출
    return 0;
}

 

4. 콜백 함수

void myCallback(void (*callbackFunc)()) {
    // 콜백 함수 호출
    callbackFunc();
}

void myFunction() {
    // 함수 내용
}

int main() {
    myCallback(myFunction); // 콜백으로 함수 전달 및 실행
    return 0;
}

 

5. 구조체와 함수 포인터

typedef struct {
    void (*function)();
} MyStruct;

void myFunction() {
    // 함수 내용
}

int main() {
    MyStruct s;
    s.function = myFunction; // 구조체 내 함수 포인터 초기화
    s.function(); // 구조체를 통한 함수 호출
    return 0;
}

 

6. 라이브러리 함수와 함수 포인터

#include <dlfcn.h>

int main() {
    void *handle = dlopen("libmylibrary.so", RTLD_LAZY); // 동적 라이브러리 열기
    void (*myFunction)() = (void (*)())dlsym(handle, "myFunction"); // 함수 포인터 얻기
    myFunction(); // 함수 호출
    dlclose(handle); // 라이브러리 닫기
    return 0;
}
728x90

'C, C++' 카테고리의 다른 글

메타 프로그래밍  (0) 2024.02.15
'함수 이름'을 인자로 받아 해당 함수를 실행하는 방법들  (0) 2023.11.20

+ Recent posts