声明了一个函数指针p,p指向一个函数,该函数的参数是两个int,返回值是float类型。
函数指针通常用于将函数作为参数传递给另一个函数,或者将函数当类类型来特例化模板(C++)。
比如以下代码:
#include <stddef.h> // C++换成 #include <cstddef>
#include <
stdio.h> // C++换成 #include <cstdio>
/* 定义F是一个函数指针类型的别名
* 该类型对应的函数接受一个int指针作为形参,返回void */
typedef void(*F)(int*);
void f(int *a) {++(*a);} // 将a指向的int增加1
/* 对数组a中每个元素都执行f */
void process_F(int *a, size_t n, F f)
{
for (int i = 0; i < n; ++i)
f(&a[i]); // 可以像函数一样使用函数指针
}
int main()
{
int a[3] = {0, 1, 2};
process_F(a, 3, f); // 将数组中每个数都增加1
printf("%d, %d, %d", a[0], a[1], a[2]); //"1, 2, 3"
return 0;
}