바람이 머문 언덕

함수 포인트 본문

컴퓨터 IT/C++ 언어

함수 포인트

알 수 없는 사용자 2009. 12. 23. 11:06
반응형

프로그램은 실행은 CPU가 담당하는데 CPU는 역시 메인 메모리(RAM)에 올라온 데이터를 가지고 실행을 하게 됨니다.
프로그램도 메모리에 올라간 다음에 실행되는데 함수의 이름은 메모리 사이에 존재하는 함수의 위치를 가리키는
주소 값을 의미 합니다.
 
int i; 에서 변수 i가 정수형 값을 저장하는 주소를 나타내 것 처럼 함수명도 함수의 저장 위치를 나타내는 것입니다.
 
함수도 포인트 변수를 선언 할 수 있는데 함수의 포인트 형을 결정 짓는 요소는 리턴형과 전달 인자로 int (*pfun) (char );라고
선언 했다고 하면 pfun은 포인트 변수 명되고 int형 을 리턴하며 전달인자로 char형을 가지는 함수의 주소를 값으가지는
함수 포인트를 선언한 것입니다.

함수 포인트의 사용 할 수 있는 곳은 많은데 그 예로 함수나 클래스를 만들었는데 어떤 특정한 일을 수행하는 함수를
사항에 따라서 전달 받기고 싶을 때도 이용 할수 있습니다.
#include <stdio.h>
                                                                                                                                                                                            int mut(int i, int (*pfun)(int, int))
{
      return i*pfun(i, i);
}

int add(int i, int k)
{
     return i+k;
}

int main( void )
{
      int b = 1;
      int (*pfun)(int, int)=add;    // int형을 리턴하고 매개 변수로 int형을 두개 전달 받는 함수 포인트 pfun선언
      for(int i = 0; i < 5; i++)
      {
            b = pfun(b, i);           // pfun 함수 포인트에 저장 된 주소를 가지고 add 함수 실행
            b = mut(b, pfun);      // mut 함수에 pfun 함수 포인트 전달
      }
      printf("%d", b);
      system("PAUSE");        // 프로그램 종료를 키 입력이 있을 때까지 기다린다.
      return 0;
}