void ( *signal( int sig, void (*func)(int) ) ) (int);
各位前配帮我分解一下它的意思?
[解决办法]
void ( *signal( int sig, void (*func)(int) ) ) (int);
声明一个函数指针signal,signal有两个参数:一个int,一个是函数指针(参数int,无返回值),signal的返回值也是一个函数指针(参数为int,无返回值)
[解决办法]
void ( *signal( int sig, void (*func)(int) ) ) (int);
定义(一个无返回值类型的函数指针 函数参数一个(是int型) (一个是void型 函数指针类型参数类型是int))
[解决办法]
#include <stdio.h>enum { RED, GREEN, BLUE };void OutputSignal(int sig){ printf("The signal you \'ve input is: "); switch(sig) { case RED: puts("RED!"); break; case GREEN: puts("GREEN!"); break; case BLUE: puts("BLUE!"); break; }}void ( *signal( int sig, void (*func)(int) ) ) (int){ puts("Hello, world!"); func(sig); return func;}int main(void){ (*signal(GREEN, &OutputSignal))(RED); return 0;}
[解决办法]
例子
1. 参数是一个函数指针
void signal(int sig, void (*func)(int) );
其中void (*func)(int) 是一个参数..这个参数是函数指针..不大好看..
2. 返回值是一个函数指针
void (*signal(int sig, int aaa) )(int) ;
假设除了返回值以外,,所有的函数声明为FUNC
简化为void (*FUNC)(int);
这只是函数FUNC返回值为void (*)(int)类型.
3. 参数,返回值都为函数指针
void (*FUNC)(int);
因为FUNC === signal(int sig, void (*func)(int))
替换之
void (*signal(int sig, void (*func)(int)))(int);
[解决办法]
void ( *signal( int sig, void (*func)(int) ) ) (int);
singnal 是个指向一个函数的指针,并且他有两个参数一个是sig,令一个是(由一个指向函数的指针(*func)参数是int的的函数返回的函数)并且singnal的参数是int型的
[解决办法]
这样,signal是函数指针定义.
[解决办法]
void ( *signal( int sig, void (*func)(int) ) ) (int);
首先
void ()(int);
这是一个函数返回是类型是void 一个参数类型int
*signal( int , void )
这是一个函数 返回类型是int * ,两个参数类型int,void
void (*func)(int)
这是一个函数 返回是 void *//也可是说是一个指针函数,一个参数类型是int
再把它们合起来读,