函數指針數組的指針

4.7.5 函數指針數組的指針

看着這個標題沒發狂吧?函數指針就夠一般初學者折騰了,函數指針數組就更加麻煩,現在的函數指針數組指針就更難理解了。

其實,沒這麼複雜。前面詳細討論過數組指針的問題,這裏的函數指針數組指針不就是一個指針嘛。只不過這個指針指向一個數組,這個數組裏面存的都是指向函數的指針。僅此而已。

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

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)

{

printf("%s/n",p);

return p;

}

char * fun3(char * p)

{

printf("%s/n",p);

return p;

}

intmain()

{

char * (*a[3])(char * p);

char * (*(*pf)[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;

}

發佈了19 篇原創文章 · 獲贊 19 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章