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

함수 포인터

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




함수에 대해서 포인터를 사용하여 활용 하는 방법

소스를 보면 이해가 갈듯, 어디서 써야 할지는 솔직히 잘 모르겠다;

함수의 인자로 함수를 보내나?? 흠--a;

#include <stdio.h>

int plus(int n1, int n2);
int minus(int n1, int n2);
int doubles(int n1, int n2);
int divied(int n1, int n2);

void main()
{
	int n1;
	int n2;
	int chk;
	int (*fp)(int, int);		// 함수는 포인터로 존재

	while(1)
	{
		printf( "1. 더하기\t2. 빼기\n3. 곱하기\t4. 나누기\n5. 종료\n" );
		scanf( "%d",&chk);

		switch(chk)
		{
		case 1:
			fp = plus;
			break;
		case 2:
			fp = minus;
			break;
		case 3:
			fp = doubles;
			break;
		case 4:
			fp = divied;
			break;
		}

		if( chk == 5 )
			break;

		scanf( "%d%d", &n1, &n2 );

		printf( "%d\n", fp(n1, n2) );

	}

}

int plus( int n1, int n2 )
{
	return n1 + n2;
}

int minus(int n1, int n2)
{
	return n1 - n2;
}
int doubles(int n1, int n2)
{
	return n1 * n2;
}
int divied(int n1, int n2)
{
	return n1 / n2;
}

 

소스, 결과 참조

int (*fp[10])(int, int);  // 함수 포인터는 배열도 가능하다.
fp[0] = sum;		// 물론 배열로도 생성 가능



ps : 알아 보니, 함수 포인터는 주로 랜더링에서 사용을 하게 된다는데,
게임 루프내에서 랜더링 함수를 실행 하게 될때
랜더1()
랜더2()
등등랜더()
를 하기 보다
루프전에 함수포인터에 넣어 주어
for를 사용해 간략하게 표현하기 위함이라고 한다.

'프로그래밍 > C언어' 카테고리의 다른 글

__FILE__, __LINE__  (0) 2010.03.10
함수 포인터(2)  (0) 2010.03.10
2차원 배열 동적 할당  (0) 2010.03.09
가변 인수  (0) 2010.03.08
문자열과 배열  (0) 2010.03.08