關於C語言函數指針實現部分面相對…

 其實很早就知道這樣的概念,只是今天想着來實現一下。首先來理解一下函數指針的定義。對於一個函數原型爲
        int PUSH(LNode *node, int  data);   那麼我們定義函數指針應該爲
        int (*p)(LNode *node, int data);//定義一個函數指針,該指針指向帶LNode指針類型和int類型的兩個形參,並返回int類型的值。
 這裏要注意一點一定要加(*p)如果不加括號則變成了定義一個函數。
        int *p(LNode *node, int data);//定義一個函數,該函數帶有LNode指針類型和int類型的兩個形參,並返回int指針類型的值。
如果我們要定義一個返回指針類型的函數指針呢?
int *(*p)(LNode *node,int data);//定義一個函數指針,該函數指針帶有LNode指針類型和int類型的兩個形參,並且返回int指針類型的值。
  到這裏應該很清楚函數指針定義的技巧了把?
總結:定義函數指針即int/void/char/int*/struct/struct*+(*name)+(形參列表);
那麼正題來了。如何在結構體中實現部分面向對象的功能呢?很簡單。在結構體中定義函數指針。然後在指向對應函數。最後進行調用就OK啦。
例:
typedef struct{
int *elem;
int (*Del)(int *elem);
}Node;
初始化:
int flag;//表示函數返回狀態
int arr[]={1,2,3};
Node node;
node={arr,delet};//結構體函數指針初始化。
flag=node.Del(node.elem);//調用結構體中定義的函數指針。
本次內容就到此爲止了。
.elem
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章