특정 함수를 가리키는 포인터이다. 이를 사용하면 함수 호출을 동적으로 결정하거나 콜백 함수로 활용할 수 있다.
함수는 이름 자체가 주소이다.
함수 포인터를 선언할 때는 함수의 반환 타입과 매개변수 형태를 맞춰야 함
일반 함수:
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;
함수 포인터는 콜백 함수로 활용되며, 특정 동작을 유연하게 처리할 수 있음
// 콜백 함수
void PrintMessage() {
cout << "Callback function called!" << endl;
}
void ExecuteCallback(void (*callback)()) {
callback();
}
int main() {
ExecuteCallback(PrintMessage);
return 0;
}
출력 결과:
Callback function called!
함수 포인터 배열을 사용해 여러 함수를 동적으로 호출할 수 있음
void Hello() { cout << "Hello!" << endl; }
void Goodbye() { cout << "Goodbye!" << endl; }
int main() {
// 함수 포인터 배열
void (*funcArr[2])() = {Hello, Goodbye};
// 동적 호출
funcArr[0]();
funcArr[1]();
return 0;
}