본문 바로가기
프로그래밍/C언어

함수 포인터(2)

by 리뷰하는 (게임)프로그래머_리프TV 2010. 3. 10.




앞에서 썻듯이 함수 포인터를 다양한 함수를 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