티스토리 뷰

typedef 함수포인터 사용

지난번에 이야기한 struct의 typedef을 사용한 바와 같이typedef은 데이터 타입에 대해서 따로 별명을 붙여서 주어 간편하게 쓰는데 목적이 있다고 했다.그럼 함수포인터에 대해서 typedef을 쓰는이유는? 당연히 간편하게 쓸려고 그런거다.

우선 함수포인터의 쓰는 방법 부터 보자.

int test(int num){
printf("input num is %d.\n", num);
}

int main()
{
int (*testptr)(int);
testptr = test;
testptr(100);
}

위의 코드에서와 같이 호출하고자 하는 함수 이름 대신에 별표(*) 포인터변수를 적어주면된다.

리턴타입 + (* 함수포인터 변수) ( 함수 인자 타입, .... )

그럼 왜 typedef 함수 포인터를 선언하는가?

예제에서와 같이 int (*testptr)(int); 식으로 적어서 함수포인터 변수를 선언하면 되는데매번 이런식으로 적으면 코드가 길어지기도 하지만 뭔가 눈에 쏙쏙들어오지 않는다.보통 변수타입 + 변수명 으로 선언을 하기 때문에 그렇다. 그래서 아래와 같이

typedef int (*TestFuncPtr)(int);


이런 식으로 선언을 해놓고 아래와 같이 쓰면 보기에도 좋고 간편하니 보통 이렇게 쓴다.

TestFuncPtr testptr;

정리

함수포인터를 typedef 선언해서 쓰는 이유는 보기 쉽고 간편해서이다.

typedef int (*TestFuncPtr)(int); // 선언
TestFuncPtr testptr; // 사용