|
저런 미친선언은 안하지만..
저걸보니 예전에 비트에서 저런걸 가르쳤건게 어렴풋이 기역이 나는군요.
그리고 시험에 나왔다는.. ㅋㅋ
지금도 가르치려나?
김상면 님이 쓰신 글 :
: 님들께서 저의 질문을 너무나도 무시무시 팍 팍 무시무시 하시는것 같아서 제가 혼자서 열심히 맨땅에 헤딩을 한 결과 아래와 같은 답을 얻었습니다.
:
:
: #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로 정의한 다음 리턴하면 되지만...
: : 원론적인 해답을 원합니다.
: :
: : 그럼
|