함수 포인터

김민수·2025년 1월 8일

C++

목록 보기
30/68

특정 함수를 가리키는 포인터이다. 이를 사용하면 함수 호출을 동적으로 결정하거나 콜백 함수로 활용할 수 있다.
함수는 이름 자체가 주소이다.


1. 함수 포인터 선언

함수 포인터를 선언할 때는 함수의 반환 타입과 매개변수 형태를 맞춰야 함

일반 함수:

void Function() {
    cout << "Hello, Function Pointer!" << endl;
}

// 함수 포인터 선언
void (*pFunc)();
pFunc = Function; // 함수 포인터에 함수 대입
pFunc();          // 함수 포인터 호출

매개변수와 반환값이 있는 함수:

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

// 함수 포인터 선언
int (*pFunc)(int, int);
pFunc = Add; // 함수 포인터에 Add 함수 대입
cout << "Sum: " << pFunc(10, 20) << endl;


2. 콜백 함수로 사용

함수 포인터는 콜백 함수로 활용되며, 특정 동작을 유연하게 처리할 수 있음

// 콜백 함수
void PrintMessage() {
    cout << "Callback function called!" << endl;
}

void ExecuteCallback(void (*callback)()) {
    callback();
}

int main() {
    ExecuteCallback(PrintMessage);
    return 0;
}

출력 결과:

Callback function called!


3. 배열과 함수 포인터

함수 포인터 배열을 사용해 여러 함수를 동적으로 호출할 수 있음

void Hello() { cout << "Hello!" << endl; }
void Goodbye() { cout << "Goodbye!" << endl; }

int main() {
    // 함수 포인터 배열
    void (*funcArr[2])() = {Hello, Goodbye};

    // 동적 호출
    funcArr[0]();
    funcArr[1]();

    return 0;
}
profile
안녕하세요

0개의 댓글