Sort함수는 하나인데 여기에 다른 함수들의 주소를 넘겨주어서 다른 정렬로 가변배열을 정리 할 수 있도록 만들어 주도록 하자.
Sort하는데 &s이 녀석을 &함수 이렇게 전달을 할 수도 있다.
그리고 함수는 이름 자체가 주소로 인정이 되기 때문에 이름만 붙여도 상관없다.
이렇게 가능.
그러면 Sort함수는 인자로 함수의 주소를 받을 수 있게 설계 되어야한다.
void-1 (Func)-2 void-3
반환타입이 void-1이고, 인자가 없는(void-3) 그런 함수의 주소를(Func-3)를 받겠다.
이게 함수 포인터 선언 방법이다.
이렇게 함수의 주소를 받을 수 있는 함수 포인터를 선언할 수 있고
따라서
pFunc를 호출을 한다는 것은 pFunc가 담고있는 Test함수의 주소이기 때문에 Test함수를 호출을 한다는 것이다.
현재 이러니까
인자로 int 포인터 타입을 받고, int를 받는 그런 함수의 주소를 받아야 한다.
어떤 임의의 sort함수를 받는데,
그녀석의 반환 타입이 void이고, 인자로 int*, int를 받는 함수이다.
이렇게 호출을 해주고
실행해서 결과 확인하면 똑같다.
누군가 필요할지도 모르는 함수를 다 만들어 놓을 수 없다.
그래서 함수 포인터를 이용하여 애니매이션 기능이 끝나면 사용자가 전달해준 함수를
호출하여 준다.