반응형
출처: 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; // 사용
반응형
'컴퓨터 > C_Programing' 카테고리의 다른 글
visual studio 200x 버전 C4996 경고 (0) | 2016.01.17 |
---|---|
c언어 한글코드 확인 방법( & 0x80) (1) | 2016.01.17 |
포인터배열 / 배열포인터 차이 (0) | 2016.01.17 |
visual studio(VS) 6.0 에서 스택 크기/사이즈 변경 (0) | 2016.01.17 |
이중 포인터 동적 할당(malloc) / c언어 (0) | 2016.01.17 |