[열공하다]포인터를 해석하는 문장인데..설명이 어려워서요
감춰왔던
문제의 문장은 아래와 같습니다.
void ( *signal ( int sig, void ( *func ) ( int ) ) ) ( int );
(읽기 쉬우라고 그냥 띄어쓰기 했습니다.)
이걸 책에서 해석하는 부분이었는데요..
책에는
signal은 [void를 되둘리며 인수가 int의 함수의 포인터]를 되돌리는 함수로, 인수가 2개 있는데, 하나는 int, 또 하나는 [void를 되돌리며 인수가 int의 함수의 포인터]입니다.
이렇게 해석해놨는데 도저히 저자의 설명에 따라가질 못해서요,
고수님들의 이해하기 쉬운 해석을 부탁드릴려고 합니다..^^
그럼 부탁드립니다..
참고로 전체적으로도 이해가 잘 안되지만 가장 이해가 안되는 부분은 맨 첫줄에 signal 은 ...를 되돌리는 함수로 -- 요부분 입니다..
제가 보기엔 함수를 가리키는 포인터 같은데요..왜 이럴까요?
-
다이
당사자인 저도 환장하겠습니다..ㅡㅡ; 그래서 계속 해볼랍니다..답글 감사드립니다,^^
-
돋가이
아.. 제일 끝에 (int) 가 있는 걸로 봐서는... 이게. 함수형 포인터군요~ 와 정말 헷갈리네 -_- 웁 ;;
-
해사랑해
좀 복잡한문장이네요 제가보기에는 *signal( int sig,void(*func)(int)))(int);때문에 혼란스러운듯..
문장은 함수포인터인데 함수포인터가 가르키는 값이 두개를 가르키는군요 과연이런문장이 어디에쓰일지도 궁금하네여.. void를 되돌리면 인수가 int 의 함수 포인터란 말이 위문장은 포인터함수입니다.
그리구 인자로 int형값을 받구 리턴값은 없습니다. 함수포인터가 가르키는 값이 저또한 이해가 안되는데요
가르키는 값이 둘중하나를 가 -
꽃내
제가 업무에서 프로그래밍을 하면서, void ( *signal ( int sig, void ( *func ) ( int ) ) ) ( int ); 와 같이 사용하는 경우는 못본거 같습니다. 함수포인터라고 해도 저렇게 꽈서 쓰지는 않죠. 문제를 위해서 만들어놓은 거 같은데요.
함수포인터가 궁금하시면, 함수포인터로 검색하면 사이트에 간단한 강좌가 있습니다. 이정도만 이해하시면 실무에서 사용하시는데 무리가 없습니다. 가령, 2개의 정수형을 인자로 받고 문자형