问:若C语言形式参数为函数的函数怎么写?有例子的采纳后会加分.
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/31 17:20:43
问:若C语言形式参数为函数的函数怎么写?有例子的采纳后会加分.
问:若C语言形式参数为函数的函数怎么写?有例子的采纳后会加分.
问:若C语言形式参数为函数的函数怎么写?有例子的采纳后会加分.
我以前答过的一个题的例子拿给你看看.
函数名:errorSetHandler
参数:function是个函数类型的变量,void (*)(int,char_t *),这个函数类型有两个参数,一个整型,一个char_t *的指针型,返回是个void *指针.
返回:是个函数类型,void (*)(int ,char_t *),类型说明跟上面一样.
void (*errorSetHandler(void (*function)(int etype,char_t *msg)))(int etype,char_t *msg)
{
void (*oldHandler)(int etype,char_t *buf); //定义一个函数void (*)(int ,char_t *)类型的函数变量oldHandler
oldHandler = errorHandler; //把errorHandler赋给oldHandler,errorHandler应该也是个函数变量
errorHandler = function; //把参数function赋给errorHandler
return oldHandler; //返回函数变量oldHandler的值
}
补充一下:
通过typedef可以简化这个函数的形式:
typedef void (*ErrHdlr)(int,char_t *);
然后这个函数可以简化成:
ErrHdlr errorSetHandler(ErrHdlr function)
{
ErrHdlr oldHandler;
oldHandler = errorHandler;
errorHandler = function;
return oldHandler;
}
这样是不是就很直观了