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);
}
+) 모양
typedef 과 using 을 사용해서 모양을 바꿀수도 있다.
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
'STUDY > 이론 정리' 카테고리의 다른 글
알파 ( 알파 테스트, 알파 블렌딩, 알파소팅 ) 에 대하여 (0) | 2022.10.04 |
---|---|
[C++] 함수호출규약 - thisCall (0) | 2022.08.26 |
[C++] 람다 (0) | 2022.08.26 |
임계 영역 (Critical Section) , 교착 상태 (Dead Lock) (0) | 2022.08.24 |
멀티 프로세스 (Multi-Process) 와 멀티 스레드 (Multi-Thread) (+) 동기 , 비동기 (0) | 2022.08.23 |