问:若C语言形式参数为函数的函数怎么写?有例子的采纳后会加分.
来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/05/01 02:03:14
问:若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;
}
这样是不是就很直观了
再问: 、、、还是没看懂 就是说,我写了A,B两个函数 我再要用函数A的时候,把B做参数:A(···B···)这种类型 请问怎么写~因为看书的时候,有个遍历函数类似这样的 比如Traverse(s,void (*visit)()) 若B(就是visit函数)还有参数和没有参数又怎么写,举一个很简单的例子就好 谢谢了~
再答: 如果B作为A的参数,假如B是这么定义的: void B(int x) { } 那么A就这么定义(这里假定A返回值是int型,并且除了函数这个参数,还有两个参数,一个int一个char): int A(int a, char b, void (*fun)(int)) { } 调用A的时候这么写: n=A(x,y,B); 就用你这个遍历函数为例 B函数一个char型参数,函数实现打印这个字符 void B(char c) { printf("%c", c); } 遍历函数遍历整个字符串,用visit处理每个字符 void Traverse(char *s, void (*visit)(char)) { while(*s++) visit(*s); } 在main里调用Traverse函数: int main() { char str[]="hello world!"; Traverse(str, B); }
函数名: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;
}
这样是不是就很直观了
再问: 、、、还是没看懂 就是说,我写了A,B两个函数 我再要用函数A的时候,把B做参数:A(···B···)这种类型 请问怎么写~因为看书的时候,有个遍历函数类似这样的 比如Traverse(s,void (*visit)()) 若B(就是visit函数)还有参数和没有参数又怎么写,举一个很简单的例子就好 谢谢了~
再答: 如果B作为A的参数,假如B是这么定义的: void B(int x) { } 那么A就这么定义(这里假定A返回值是int型,并且除了函数这个参数,还有两个参数,一个int一个char): int A(int a, char b, void (*fun)(int)) { } 调用A的时候这么写: n=A(x,y,B); 就用你这个遍历函数为例 B函数一个char型参数,函数实现打印这个字符 void B(char c) { printf("%c", c); } 遍历函数遍历整个字符串,用visit处理每个字符 void Traverse(char *s, void (*visit)(char)) { while(*s++) visit(*s); } 在main里调用Traverse函数: int main() { char str[]="hello world!"; Traverse(str, B); }
问:若C语言形式参数为函数的函数怎么写?有例子的采纳后会加分.
C语言printf函数和scanf函数参数的区别?
C语言的time函数中不加参数和加参数有区别吗
一道C语言题目:下面对函数形式参数声明正确的是
C语言中函数名后面()中定义的参数和函数体内定义的变量有什么区别?
年龄计算,解释一下例子里的C语言函数
C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊
C语言 数组作为函数参数怎么弄
求一个用C语言写的大数除法模块,函数参数是两个1000位以内的整数
C语言函数传递多个数组参数 例如一个函数需要a,b两个数组怎么写
C++语言中,函数的变量和函数的参数有什么区别?
C语言函数中什么是输出参数?举个简单例子?