函数指针: 指向函数的指针(是指针)
指针函数:返回值是指针的函数(是函数)
#include <stdio.h>
#include <stdlib.h>
#define DF(N) int N(int x, int y) { return x * y; }
DF(fa); DF(fb); DF(fc);
typedef int (*pfun) (int x, int y);
int main() {
int i;
pfun *p;
p = (pfun *) malloc(sizeof(pfun) * 3);
p[0] = fa;
p[1] = fb;
p[2] = fc;
int (**p1) (int x, int y);
p1 = (int (**) (int x, int y)) malloc(sizeof(int (*) (int x, int y)) * 3);
p1[0] = fa;
p1[1] = fb;
p1[2] = fc;
for (i=0; i<3; i++) {
printf("%d\n", (p1[i])(i+1, i+1));
}
return 0;
}
1. void* (*(*f1) (int)) [10];
2. float (*(*f2) (int, int, float)) (int);
3. double (* (* (*f3) ()) [10]) ();
4. int (* (* f4()) [10]) ()
1. f1是一个函数指针,指向的函数有一个int参数和一个指针返回值,该指针返回值指向一个大小为10的空类型指针数组;
2. f2是一个函数指针,指向的函数有int,int,float三个参数和一个指针返回值,该指针返回值指向一个参数为int返回值为float的函数;
3. f3是一个函数指针,指向的函数无参且返回一个数组指针,该数组指针指向一个含有10个函数指针的数组,数组类型是指向无参且返回值为double的函数指针;
4. f4是一个无参函数,该函数返回一个大小为10的函数指针数组,函数指针指向无参且返回int的函数。
网友评论