시작을 []
및 ()
바인드 *
전에, 그래서 *a[]
포인터의 배열임을 기억 밖으로 당신의 방식으로 작동, (*a)[]
는 *f()
포인터를 반환하는 함수, 배열에 대한 포인터이며, (*f)()
함수에 대한 포인터입니다 :
signal -- signal
signal( ) -- is a function
signal( sig, ) -- with a parameter named sig
signal(int sig, ) -- of type int
signal(int sig, func ) -- and a parameter named func
signal(int sig, (*func) ) -- which is a pointer
signal(int sig, (*func)( )) -- to a function
signal(int sig, (*func)(int)) -- taking an int parameter
signal(int sig, void (*func)(int)) -- and returning void
*signal(int sig, void (*func)(int)) -- returning a pointer
(*signal(int sig, void (*func)(int)))( ) -- to a function
(*signal(int sig, void (*func)(int)))(int) -- taking an int parameter
void (*signal(int sig, void (*func)(int)))(int); -- and returning void
signal
동료 신호 sig
와 신호 처리기 함수 func
, 그리고 기존의 시그널 핸들러 함수에 대한 포인터를 반환 :
,
void new_interrupt_handler(int sig)
{
... // do something interesting with interrupt signal
}
int main(void)
{
void (*old_interrupt_handler)(int);
...
/**
* Set up our new interrupt handler
*/
old_interrupt_handler = signal(SIGINT, new_interrupt_handler);
...
/**
* Restore original interrupt handler
*/
signal(SIGINT, old_interrupt_handler);
...
}
그러나 이것은 내가 혼란스러워하는 곳이다. http://www.joyofprogramming.com/Docs_ColumnArticles/36-JoP-Dec-09.pdf –
'typedef int foo (void)': foo는 함수를 가리키는 포인터이다. , 당신은'foo x '를 할 수 있기 때문에 그것을 단축 할 수 있고 함수라고 말할 수 있습니다; x();' – Benoit
@Benoit 답장으로 추가 할 수 있습니까? –