본문 바로가기

STUDY/이론 정리

[C++] 함수 포인터 (Function Pointer)

728x90

함수 포인터

함수의 주소 값을 지닐 수 있는 포인터 변수

 

ex ) 선언 방법

int (*fp1)();
int (*fp2)(int);
int (*fp3)(int, int);
bool (*fp4)();
void (*fp5)();

 

일반 함수 선언과 마찬가지로 반환 타입, 변수이름, 매개 변수 같은 형식이다.

단, 변수 이름 앞에 * 를 붙여서 포인터로 선언해준다. 이때, int* 와 다름을 알려주기 위해 (*name) 처럼

괄호를 해줘야 한다. 

 

 

기능

가장 유용한 기능은 함수를 다른 함수에 전달 하는것. 이 때 다른 함수에 대한 인수로써 사용되는 함수를 콜백 함수 라고 부른다.

 

ex) 

void (*FuncPtr)(int,int);

void Func( int temp , void (*Funcptr)(int,int) );

void Func1(int a, int b);
void Func2(int a, int b);

int main()
{
	Func(0, Func1);
    	Func(1, Func2);
	
}

 

+) 모양

typedefusing 을 사용해서 모양을 바꿀수도 있다.

 

typedef void (*FuncPtr)();

void Func( FuncPtr ptr );

using FuncPtr = void(*)();

 

++) #include <functional>

#include <functional>

std::function<bool(int,int) funcPtr;

C++ 의 functional 헤더를 이용하여 함수포인터를 정의할수도 있다.

bool = 반환타입 int = 매개변수

728x90