C언어

[C언어] 함수 포인터

소혜아빠 2021. 1. 13. 14:43

함수포인터를 사용해서 함수를 호출하는 프로그램은 가독성이 떨어질 수 있습니다. 그러나, 함수 포인터로 인자를 받아서 호출하게 되면 유지 관리가 편한 것과 추후 프로그램 수정이 필요할 때 유연하게 수정을 할 수 있습니다.

 

가독성이 떨어지기 때문에 디버깅도 힘들 수 있고 예외처리를 제대로 해주지 않으면 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'
}