关于函数指针的解释
来源:互联网 发布:php缓存 编辑:程序博客网 时间:2024/04/30 01:20
<signal.h> 中
void ( *signal( int sig, void (* handler)( int ))) ( int );
int (*p)();
这是一个函数指针, p所指向的函数是一个不带任何参数, 并且返回值为int的一个函数.
int (*fun())();
这个式子与上面式子的区别在于用fun()代替了p,而fun()是一个函数,所以说就可以看成是fun()这个函数执行之后,它的返回值是一个函数指针,这个函数指针(其实就是上面的p)所指向的函数是一个不带任何参数,并且返回值为int的一个函数.
void (*signal(int signo, void (*handler)(int)))(int);就可以看成是signal()函数(它自己是带两个参数,一个为整型,一个为函数指针的函数), 而这个signal()函数的返回值也为一个函数指针,这个函数指针指向一个带一个整型参数,并且返回值为void的一个函数.
在写信号处理函数时对于信号处理的函数也是void sig_fun(int signo);这种类型,恰好与上面signal()函数所返回的函数指针所指向的函数是一样的.
void ( *signal() )( int );
signal是一个函数, 它返回一个函数指针, 后者所指向的函数接受一个整型参数 且没有返回值, 仔细看, 是不是siganal( int signo, void (*handler)(int) )的第2个参数了, 对了, 其实他所返回的就是 signal的第2个信号处理函数, 指向信号处理函数, 就可以执行函数了( signal内部时, signal把信号做为参数传递给handler信号处理函数, 接着 signal 函数返回指针, 并且又指向信号处理函数, 就开始执行它)
那么,signal函数的参数又是如何呢?signal函数接受两个参数:一个整型的信号编号,以及一个指向用户定义的信号处理函数的指针。我们此前已经定义了指向用户定义的信号处理函数的指针sfp:
void (*sfp)(int);
sfp 的类型可以通过将上面的声明中的sfp去掉而得到,即void (*)(int)。此外,signal函数的返回值是一个指向调用前的用户定义信号处理函数的指针,这个指针的类型与sfp指针类型一致。因此,我们可以如下声明signal函数:
void (*signal(int, void(*)(int)))(int);
同样地,使用typedef可以简化上面的函数声明:
void ( *signal( int sig, void (* handler)( int ))) ( int );
int (*p)();
这是一个函数指针, p所指向的函数是一个不带任何参数, 并且返回值为int的一个函数.
int (*fun())();
这个式子与上面式子的区别在于用fun()代替了p,而fun()是一个函数,所以说就可以看成是fun()这个函数执行之后,它的返回值是一个函数指针,这个函数指针(其实就是上面的p)所指向的函数是一个不带任何参数,并且返回值为int的一个函数.
void (*signal(int signo, void (*handler)(int)))(int);就可以看成是signal()函数(它自己是带两个参数,一个为整型,一个为函数指针的函数), 而这个signal()函数的返回值也为一个函数指针,这个函数指针指向一个带一个整型参数,并且返回值为void的一个函数.
在写信号处理函数时对于信号处理的函数也是void sig_fun(int signo);这种类型,恰好与上面signal()函数所返回的函数指针所指向的函数是一样的.
void ( *signal() )( int );
signal是一个函数, 它返回一个函数指针, 后者所指向的函数接受一个整型参数 且没有返回值, 仔细看, 是不是siganal( int signo, void (*handler)(int) )的第2个参数了, 对了, 其实他所返回的就是 signal的第2个信号处理函数, 指向信号处理函数, 就可以执行函数了( signal内部时, signal把信号做为参数传递给handler信号处理函数, 接着 signal 函数返回指针, 并且又指向信号处理函数, 就开始执行它)
那么,signal函数的参数又是如何呢?signal函数接受两个参数:一个整型的信号编号,以及一个指向用户定义的信号处理函数的指针。我们此前已经定义了指向用户定义的信号处理函数的指针sfp:
void (*sfp)(int);
sfp 的类型可以通过将上面的声明中的sfp去掉而得到,即void (*)(int)。此外,signal函数的返回值是一个指向调用前的用户定义信号处理函数的指针,这个指针的类型与sfp指针类型一致。因此,我们可以如下声明signal函数:
void (*signal(int, void(*)(int)))(int);
同样地,使用typedef可以简化上面的函数声明:
typedef void (*HANDLER)(int);HANDLER signal(int, HANDLER);
http://topic.csdn.net/u/20111226/22/fd3a77cb-66c8-44bd-90e6-8e09eed59317.html?28235
- 关于函数指针的解释
- 关于C中函数参数,指针-常量-引用解释的4个函数例子
- 关于AggregationClient 除了rowCount以外的其他聚合函数抛空指针异常的解释
- 关于内联函数的解释
- 关于C语言的指针解释
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
- 指针函数 的解释c语言
- 关于指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 关于函数指针的使用
- 关于函数指针的&和*
- 关于函数的指针参数
- 关于函数的指针参数
- 关于函数指针的应用
- 关于函数指针的问题
- Compareble 接口与Comparator接口比较
- 手机网站网址
- Python WEB框架简介
- 对CSDN明文存放我的密码表示无比的愤怒
- 利用Java读写锁设计缓冲类
- 关于函数指针的解释
- Context类中openFileOutput ()函数的使用
- 2011-12-29今天签到时间15:30
- Window7上搭建symfony开发环境(PEAR)
- 30个超级好玩的网站
- 案例研究:使用英特尔GPA优化《剑侠情缘三》游戏的性能
- 跨域、跨子域,跨服务器读取session
- APS.NET MVC 3 中使用依赖注入(IOC) - Ninject
- 做动态报表