- C 函数指针
C 函数指针是一个指向函数的指针变量,它存储的是函数的地址,通过该函数指针可以调用被指向的函数。函数指针可以用来实现动态回调,灵活地调用不同的函数,是 C 语言中非常重要的概念之一。
函数指针的定义格式如下:
返回值类型 (* 指针变量名) (参数列表);
例如,定义一个函数指针,指向一个返回值为整型,带一个整型参数的函数,可以这样写:
int (*fp)(int);
注意,函数指针的声明中,指针变量名称的括号不能省略。
下面是一个函数指针的示例代码:
#include <stdio.h>
int add(int a, int b) { return a + b; }
int subtract(int a, int b) { return a - b; }
int main() {
int (*fp)(int, int); // 声明一个函数指针 fp
int a = 10, b = 5;
fp = add; // fp 指向 add 函数
printf("10 + 5 = %d\n", fp(a, b)); // 调用 fp 指向的函数,输出 15
fp = subtract; // fp 指向 subtract 函数
printf("10 - 5 = %d\n", fp(a, b)); // 调用 fp 指向的函数,输出 5
return 0;
}
- 回调函数
回调函数是指将函数指针作为参数传递给另一个函数,当某个条件满足时,一般是异步的,执行函数指针所指向的函数,以完成特定的操作。回调函数常用于事件驱动程序设计,例如 GUI 编程、网络编程等。
回调函数的定义格式如下:
返回值类型 回调函数名称 (参数列表, 函数指针);
例如,定义一个回调函数,名为 do_something
,它接受一个整型参数和一个函数指针参数,可以这样写:
void do_something(int value, int (*fp) (int, int)) {
int result = fp(value, 5);
printf("do_something result: %d\n", result);
}
下面是一个回调函数的示例代码:
#include <stdio.h>
void do_something(int value, int (*fp)(int, int)) {
int result = fp(value, 5);
printf("do_something result: %d\n", result);
}
int add(int a, int b) { return a + b; }
int subtract(int a, int b) { return a - b; }
int main() {
int a = 10;
do_something(a, add); // 将 add 函数指针作为参数传递给 do_something 函数
do_something(a, subtract); // 将 subtract 函数指针作为参数传递给 do_something 函数
return 0;
}
在上面的代码中,我们定义了两个函数 add
和 subtract
,然后将它们的函数指针作为参数传递给 do_something
函数,来实现回调操作。
以上就是 C 函数指针与回调函数的完整使用攻略,希望对您有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C 函数指针与回调函数 - Python技术站