C++有class, 那 C 呢??
以下介紹兩種方式,
方法一是定義的結構裡有函數pointer,然後再將結構宣告成陣列形式,好處是多定義了資料欄位
方法二是直接用陣列紀錄函式的pointer
//
// Method 1
//
+ int func1(int x)
+ {
+ return (2*x);
+ }
+
+ int func2(int x)
+ {
+ return (4*x);
+ }
+
+ typedef struct
+ {
+ int prio;
+ int ( *funcType )(int); //Function pointer
+ } TEST;
+
+ int main()
+ {
+
+ TEST MyTask[] = {
+ { 1 , func1 },
+ { 2 , func2 }
+ };
+
+ printf("x=2\n");
+
+ printf("function priority = %d, output 2x= %d\n", MyTask[0].prio, MyTask[0].funcType(2) );
+
+ printf("function priority = %d, output 4x= %d\n", MyTask[1].prio, MyTask[1].funcType(2) );
+ return 0;
+ }
--------------------------------Result----------------------------------
x=2
function priority = 1, output 2x=4
function priority = 2, output 2x=8
//
// Method 2
//
+
+ void Plus() {
+ printf("Plus\n");
+ }
+
+ void Sub() {
+ printf("Sub\n");
+ }
+
+ void main()
+ {
+ void ( *FuncGroup[] ) (void) = {Plus, Sub}; // 函數指標陣列
+
+ FuncGroup[ 0 ] (); // 呼叫函數
+ FuncGroup[ 1 ] ();
+ }
-----------------------------Result--------------------------------
Plus
Sub
沒有留言:
張貼留言