函數指針: 指向函數的指針(是指針)
指針函數:返回值是指針的函數(是函數)
#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的函數。