Question:在函数void function()中,需要将另外一个函数double input()的函数名作为参数。
首先定义intput()的函数指针
typedef double (*P)(int);
Note:参数部分需要注意,函数input()所有的输入参数类型都需要包含在内。
例如 double input(double u[5], int num, double x), 则在定义时写作 typedef double (*P)(double*,int,double)。
此时,函数作为一种类型,可以直接被其他函数调用。
调用格式
函数声明中定义 void function(P input),调用function(input)即可。
实例
#include <stdio.h>
typedef void (*P)(int);
void print(int n) {
printf("%d\n",n);
}
void fun(int n,P show(int)) {
int i;
for(i=0; i<n; i++) {
show(i);
}
}
int main() {
fun(10,print);
return 0;
}
也可以写成
#include <stdio.h>
void print(int n) {
printf("%d\n",n);
}
void fun(int n,void (*show)(int)) {
int i;
for(i=0; i<n; i++) {
show(i);
}
}
int main() {
fun(10,print);
return 0;
}