看着這個标題沒發狂吧?函數指針就夠一般初學者折騰了,函數指針數組就更加麻煩,
現在的函數指針數組指針就更難了解了。
其實,沒這麼複雜。前面詳細讨論過數組指針的問題,這裡的函數指針數組指針不就是
一個指針嘛。隻不過這個指針指向一個數組,這個數組裡面存的都是指向函數的指針。僅
此而已。
下面就定義一個簡單的函數指針數組指針:
char * (*(*pf)[3])(char * p);
注意,這裡的pf 和上一節的pf 就完全是兩碼事了。上一節的pf 并非指針,而是一個數組名;
這裡的pf 确實是實實在在的指針。這個指針指向一個包含了3 個元素的數組;這個數字裡
面存的是指向函數的指針;這些指針指向一些傳回值類型為指向字元的指針、參數為一個
指向字元的指針的函數。這比上一節的函數指針數組更拗口。其實你不用管這麼多,明白
這是一個指針就ok 了。其用法與前面講的數組指針沒有差别。下面列一個簡單的例子:
#include <stdio.h>
#include <string.h>
char * fun1(char * p)
{
printf("%s\n",p);
return p;
}
char * fun2(char * p)
char * fun3(char * p)
intmain()
char * (*a[3])(char * p);
pf = &a;
a[0] = fun1;
a[1] = &fun2;
a[2] = &fun3;
pf[0][0]("fun1");
pf[0][1]("fun2");
pf[0][2]("fun3");
return 0;