C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47976] Re:함수 포인터에 관해서 질문...
김상면 [windyboy] 1004 읽음    2007-02-03 20:01
님들께서 저의 질문을 너무나도 무시무시 팍 팍 무시무시 하시는것 같아서 제가 혼자서 열심히 맨땅에 헤딩을 한 결과 아래와 같은 답을 얻었습니다.


#include <Turboc.h>

int f1(int a, double b)
{
     return 1;
}

int f2(int a, double b)
{
     return 2;
}

int (*SelectFunc(char ch))(int,double)
{
     if (ch == 'a') {
          return f1;
     } else {
          return f2;
     }
}

void main()
{
     int (*fp)(int,double);
     fp=SelectFunc('a');
     printf("리턴된 값 = %d\n",fp(1,2.3));
}



그런대 충격적인 말을 제가 들었습니다. 다음을 한번 읽어 보세요.



char (*func(char **buf, char *(*strf[9])(void), int *pi))(unsigned short,unsigned (**)(const char *));

문자형 이중 포인터 buf를 첫 번째 인수로 취하고, 인수가 없으며 문자형 포인터를 리턴하는 함수를 포인트 하는 크기 9의 함수 포인터 배열을 두 번째 인수로 취하고, 정수형 포인터를 세 번째 인수로 취하며, 부호없는 16비트 정수를 첫 번째 인수로 취하며, 문자형 상수 지시 포인터를 인수로 취하고 부호없는 정수를 리턴하는 함수의 이중 포인터를 두 번째 인수로 취하며 문자형을 리턴하는 함수를 포인트하는 함수 포인터를 리턴하는 함수 func을 선언한다.

도대체 이게 함수인지 변수인지조차도 잘 분간이 되지 않는 지경이다. 재미로 한 번 보라고 만든 것 뿐이지 이런 함수를 만들 일은 전혀 없다고 장담할 수 있다. 이런 선언문을 읽지 못한다고 해서 고민할 필요는 전혀 없다. 오히려 이런 선언문을 거침없이 읽을 수 있는 사람이 이상한 사람이고 저런 선언문을 만든 사람은 더 이상한 사람이다.


졸지에 제가 이상한 사람이 되었습니다.
그럼


김상면 님이 쓰신 글 :
: 함수가 함수 포인터를 리턴할려면 어떻게 정의 해야 하지요?
: 물론 리턴형을 typedef로 정의한 다음 리턴하면 되지만...
: 원론적인 해답을 원합니다.
:
: 그럼

+ -

관련 글 리스트
47971 함수 포인터에 관해서 질문... 김상면 966 2007/02/02
47976     Re:함수 포인터에 관해서 질문... 김상면 1004 2007/02/03
47977         Re:Re:함수 포인터에 관해서 질문... 전홍진 1049 2007/02/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.