注册后第一次发帖,先分享一段代码,表明自己的学习进度。
使用函数指针的一个例子。程序代码:
#include <stdio.h> #include <stdlib.h> #define LENGTH 3 int main(void) { double *map(double (*)(double), double *, int); // 第一个参数是函数指针 double pow2(double); double * p = map(pow2, (double[LENGTH]){1.2, 2.8, 3.4}, LENGTH); // 第一个参数为函数名 for (int i = 0; i < LENGTH; ++i) { printf("%lf, ", p[i]); } puts(""); free(p); p = NULL; return 0; } double pow2(double num) { return num * num; } double *map(double (*pf)(double), double *p, int n) { double *pd = malloc(n * sizeof(double)); for (int i = 0; i < n; i++) { pd[i] = pf(p[i]); // 函数指针pf, K&R C只允许(*pf)(p[i]), ANSI C以及以后的标准允许两种 } return pd; }
输出结果是
1.440000, 7.840000, 11.560000,