返回函数指针的函数
C语言中可以编写返回函数指针的函数。下面是一个示例:
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int (*getOperation(char operator))(int, int) {
if (operator == '+') {
return add;
} else if (operator == '-') {
return subtract;
} else {
printf("Invalid operator\n");
return NULL;
}
}
int main() {
int a = 10;
int b = 5;
char operator = '+';
int (*operation)(int, int) = getOperation(operator);
if (operation != NULL) {
int result = operation(a, b);
printf("Result: %d\n", result);
}
return 0;
}
在上面的示例中,getOperation函数接收一个操作符作为参数,并根据操作符返回对应的函数指针。在main函数中,我们调用getOperation函数获取对应操作符的函数指针,并使用该函数指针进行计算。
信号处理函数signal
那么signal函数也是类似的语法
void (*signal(int signo,void(*func)(int)))(int);
定义的函数名为signal,
其中(*signal(int signo,void(*func)(int)))
是signal函数的返回类型【函数指针】;signal函数是一个接收(int signo,void(*func)(int))
两个参数的类型的函数;
其中第二个参数时一个形参为int,返回值void的指针;
最后的(int)
是返回的这个函数调用时的传参数;
最左边的void是返回的函数指针调用后的返回类型;
signal内部其实是return这个func函数指针;