함수포인터를 사용해서 함수를 호출하는 프로그램은 가독성이 떨어질 수 있습니다. 그러나, 함수 포인터로 인자를 받아서 호출하게 되면 유지 관리가 편한 것과 추후 프로그램 수정이 필요할 때 유연하게 수정을 할 수 있습니다.
가독성이 떨어지기 때문에 디버깅도 힘들 수 있고 예외처리를 제대로 해주지 않으면 NULL 포인터에 진입할 가능성이 있으니 이 부분도 검사를 잘해줘야합니다.
// 임의의 숫자 변수 선언
unsigned char Num = 0;
// unsigned char형 매개변수를 갖는 void형 함수 포인터 생성
void (*Func_Pointer)(unsigned char p_Num);
void Func(unsigned char p_Num)
{
num = p_Num;
}
void main(void)
{
Num = 0;
/* 함수 포인터 주소 지정 */
Func_Pointer = &Func(5);
// Func_Pointer = Func(5); // 함수 이름 앞에 &를 지정해주지 않아도 자동으로 주소값을 지정된다.
/* 포인터를 통한 함수 호출 */
(*Func_Pointer)(5); // 포인터를 통한 함수 호출의 원칙적인 표현
// (Func_Pointer)(5); // 포인터를 통한 함수 호출의 그래도 허용되는 표현
printf("%d",Num); // '5'
}