天天看點

函數指針數組的指針

看着這個标題沒發狂吧?函數指針就夠一般初學者折騰了,函數指針數組就更加麻煩,

現在的函數指針數組指針就更難了解了。

其實,沒這麼複雜。前面詳細讨論過數組指針的問題,這裡的函數指針數組指針不就是

一個指針嘛。隻不過這個指針指向一個數組,這個數組裡面存的都是指向函數的指針。僅

此而已。

下面就定義一個簡單的函數指針數組指針:

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;