: 함수를 가리키는 변수로, 함수의 주소를 저장한다.
-> 함수의 주소 전달할 때 함수 이름 앞에 & 붙이거나,
함수 이름 자체가 주소이므로 함수 이름만 적어도 됨
Sort(&s1, BubbleSort);
pFunc 는 함수 Test의 주소를 가리킨다.void Test() { }
int main()
{
//인수와 반환값이 없는 함수에 대한 포인터 선언
void(*pFunc)(void) = nullptr;
pFunc = Test;
pFunc(); //Test 함수 호출
}
콜백 함수
: 인자로 넘겨받은 함수.
-> 다른 함수를 호출하여 특정 기능을 넘긴다.
ex) 다양한 종류의 정렬 함수들을 구현하면 함수가 너무 많아진다. 따라서 개별적으로 구현하지 말고,
정렬 함수 하나만 정의한 뒤 main 파일에 여러 함수들을 구현해 두고 정렬 함수에서 각 함수들을 호출한다.
void BubbleSort(int* _pData, int _iCount)
-> BubbleSort 함수의 인자 타입이 int*, int 이다.
void Sort(tArr* _pArr, void(*SortFunc)(int*, int))
-> Sort 함수가 임의의 정렬 함수를 받아올 때(예:BubbleSort), 반환 타입은 void, 인자는 int* 와 int 형태여야 한다.
void Sort(tArr* _pArr, void(*SortFunc)(int*, int))
{
//데이터 시작 주소와 유효값 넘기기
SortFunc(_pArr->pInt, _pArr->iCount);
}
[참고]
https://youtu.be/MzsOdFqtK7M
https://boycoding.tistory.com/233
https://badayak.com/entry/C%EC%96%B8%EC%96%B4-%ED%8F%AC%EC%9D%B8%ED%84%B0-%ED%95%A8%EC%88%98