函数指针
在C和C++编程语言中,函数指针是一个变量,它存储了函数的地址,而不是数据的值。通过这个地址,我们可以间接地调用这个函数。函数指针在许多高级编程技术中,如回调函数、函数表、以及更复杂的编程模式如策略模式等中都有广泛应用。
函数指针的声明
函数指针的声明可能看起来有些复杂,因为我们需要指定指针所指向的函数的返回类型和参数类型。以下是一个基本的例子:
c复制代码
|
// 假设我们有一个如下的函数 |
|
int add(int a, int b) { |
|
return a + b; |
|
} |
|
|
|
// 那么指向这个函数的指针可以这样声明 |
|
int (*func_ptr)(int, int); |
在这个例子中,func_ptr是一个函数指针,它指向一个接受两个int类型参数并返回int类型结果的函数。
函数指针的赋值和调用
接下来,我们可以将函数的地址赋值给这个函数指针,并通过这个函数指针来调用函数:
c复制代码
|
func_ptr = add; |
|
|
|
// 使用函数指针调用函数 |
|
int result = func_ptr(2, 3); // 这将调用add函数,result将被赋值为5 |
完整代码示例
以下是一个完整的C语言代码示例,展示了如何声明、赋值和调用函数指针:
c复制代码
|
#include <stdio.h> |
|
|
|
// 一个简单的函数,返回两个整数的和 |
|
int add(int a, int b) { |
|
return a + b; |
|
} |
|
|
|
int main() { |
|
// 声明一个函数指针,它指向一个接受两个int类型参数并返回int的函数 |
|
int (*func_ptr)(int, int); |
|
|
|
// 将add函数的地址赋值给func_ptr |
|
func_ptr = add; |
|
|
|
// 使用函数指针调用函数 |
|
int result = func_ptr(2, 3); |
|
printf("The result is: %d\n", result); // 输出: The result is: 5 |
|
|
|
return 0; |
|
} |
这个代码示例首先定义了一个名为add的函数,然后在main函数中声明了一个名为func_ptr的函数指针,并将add函数的地址赋值给它。最后,我们使用func_ptr来调用add函数,并打印出结果。