c语言 函数指针的定义和用法376


定义函数指针是指向函数的指针变量,它存储函数的地址。函数指针的类型是由函数返回类型和参数类型决定的。

例如,声明指向返回类型为 int、参数类型为两个 int 的函数的指针:```c
int (*fp)(int, int);
```

用法函数指针的用法主要有两种:

1. 作为函数参数


可以将函数指针作为函数的参数传递,从而实现函数的动态调用。例如:
```c
void call_function(int (*fp)(int, int)) {
int result = fp(10, 20);
}
```

2. 作为函数返回值


可以将函数指针作为函数的返回值返回,从而实现函数的动态绑定。例如:
```c
int* get_function_pointer() {
int* fp = &add;
return fp;
}
```

函数指针的优点* 灵活性:函数指针允许在运行时动态调用函数,提高了代码的灵活性。
* 解耦:函数指针将函数的调用与函数的定义分离,提高了代码的可维护性。
* 回调:函数指针作为回调函数,允许将代码块传递给其他函数,实现异步编程。

函数指针的注意事项* 函数签名一致性:函数指针的类型必须与所指向函数的签名一致。
* 函数寿命:函数指针指向的函数必须在指针被使用期间保持有效,否则会产生段错误。
* 指针地址更改:如果函数指针指向的函数地址发生更改,则函数指针将失效。

实例```c
// add 函数
int add(int a, int b) {
return a + b;
}
int main() {
// 声明一个指向 add 函数的函数指针
int (*fp)(int, int) = &add;
// 调用函数指针
int result = fp(10, 20);
printf("结果:%d", result);
return 0;
}
```
输出:
```
结果:30
```

2024-11-11


上一篇:C 语言中的函数声明

下一篇:C 语言获取数组长度的函数