int *(*a[5])(int, char*);
拆开来分析:
typedef int* (*f)(int,char*);
f a[5];
所以a是个5个元素的数组,每个元素为函数指针.
可用代码验证:
#include <stdio.h> #include <stdlib.h> int* (*a[5])(int,char*); int *foo(int n, char *s) { int *p; p = (int *)malloc(sizeof(int)); *p = n + atoi(s); return p; } int main(int argc, char *argv[]) { int *p; a[0] = &foo; p = (*a[0])(1, "2"); printf("%d\n", *p); return 0; }
输出:
3
顺便把函数指针再复习一下:
#include <stdio.h> #include <stdlib.h> //int* (*a[5])(int,char*); typedef int (*f)(int,char*); f funp; int foo(int n, char *s) { return 10086; } int main(int argc, char *argv[]) { funp = &foo; printf("%x\n",funp); printf("%d\n",(*funp)(6,"test")); return 0; }
输出:
3f1000
10086
时间: 2024-10-04 19:46:50