问:若C语言形式参数为函数的函数怎么写?有例子的采纳后会加分.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 14:23:09
fEkO/xJ?88P')I}i:^6)wU|A{ÎUNwx#o_ⱁn;pj/Y/:Ωd^Tr詪o'TVE3]vLN!^șI5]}ˤP$hztE=ӕH8ʖ/( Ͽ{seA^o)6p6.W@;W &䛃 Ϋ7/Û̐˦|bv AOJP"HpCf@EVyuU*"C1rY66UDTvi {xr.W(SUi`#ziJ;C/uc.bx|CQ: lU:ImȗíHbW( B۩,Z-9ŷUFYU0}e}ͤIƆ:%\b&W?$זs2b_Z^<
问:若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;
}
这样是不是就很直观了