컴퓨터/C_Programing

함수 포인터 / typedef 선언 함수 포인터

김치부침개21 2016. 1. 17. 23:12
반응형

출처: http://ingorae.tistory.com/483


함수를 포인터로 받는 방법이다.


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

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 선언해서 쓰는 이유는 보기 쉽고 간편해서이다. 


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



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

 

반응형