C language experts help analyze complex function declarations

  c++, question

C language experts to help analyze the following complex statement, it is best to have detailed steps:

void (*signal(int sig, void (*handler)(int)))(int);

The prototype of this function comes from the C language standard library.signal.h.

The signal () function has two parameters:int sigAndvoid (*handler)(int)
The return value isvoid(*)(int)Function pointer of type