앞에서 썻듯이 함수 포인터를 다양한 함수를 for문을 이용해서 루프에서 사용한다고 하면,
실제로 함수의 포인터를 인자로 보낼 수 있는 방법도 존재한다(그러니까 함수 포인터겠지만)
#include <stdio.h>
int sum(int a, int b); // 합 구하기 함수
void ptrfunction( int (*fp)(int, int ), int a, int b ); // 함 구하는 함수 포인터를 받는 함수
void main()
{
ptrfunction(sum, 10, 20); // sum 함수의 포인터와 그 인자값을 보내기 위해 10, 20을 보낸다.
}
int sum(int a, int b )
{
return a+b;
}
void ptrfunction( int (*fp)(int, int ), int a, int b ) // 받아온 a, b를 다시 fp에 넣어줌.
{
printf( "%d\n", fp(a, b) );
}
결과는 예상할 수 있겠지만 30이 나온다.
물론 실제로 이렇게 간단하게 짤일은 없겠지만, 함수의 리턴 값을 받아서 그것으로 또 무언가 계산 하기 위해선,
이런 방법을 쓰지 않을까 생각해 본다.
주의점은 함수의 포인터를 보낼 때
ptrfunction(sum(10,20));
을 사용해서 보내 주어도 되지 않겠느냐 인데, 안된다고 한다.
그래서 좀 귀찮지만 추가로 변수안에 들어 갈 값을 설정을 해줘야 한다는 것.
아직은 잘 모르겠지만 활용법에 대해선 언젠가 알게 되겠지.
'프로그래밍 > C언어' 카테고리의 다른 글
전처리기(1) (0) | 2010.03.10 |
---|---|
__FILE__, __LINE__ (0) | 2010.03.10 |
함수 포인터 (0) | 2010.03.09 |
2차원 배열 동적 할당 (0) | 2010.03.09 |
가변 인수 (0) | 2010.03.08 |