排序演算法中函式指標的使用

2021-08-17 08:48:35 字數 983 閱讀 8500

//這是乙個鍊錶內的最小值排序演算法

void cstudent::sort()

m_list.getnext(q);

} if (m != p)

m_list.getnext(p);

}}

如果是要進行更多的規則排序,這裡的m_list.getat(m).nnumber>m_list.getat(q).nnumber就要進一步抽象出來,先把比較語句封裝成函式並歸入cstudent類中,加static關鍵字定義為靜態的以便去除**this指標這個引數,固定好兩個引數,按照學號、姓名字母、分數三個規則來排序,看看有沒有規律:
static bool bynum(data &a, data &b)

static bool bynam(data &a, data &b)

static bool byscore(data &a, data &b)

這裡我們看到三個函式的引數個數和引數型別都是相同的,考慮到這一步,就可以很自然的和函式指標勾搭上了

typedef bool(*funcpointerarray)(data a, data b);
接著定義乙個陣列:

funcpointerarray ary[3] = ;
也可以兩句合併為一句:

bool(*funcpointerarray[3])(student a, student b) = ;還是分開來寫上面兩句比較容易理解
將開頭的sort函式改造一下:

void cstudent::sort(int indext)

m_list.getnext(q);

} if (m != p)

m_list.getnext(p);

}}

以上例子就是用函式指標型別的陣列實現了排序規則的整個邏輯。

C 中函式指標的使用

在c c 中存在著函式指標,即指向函式的指標。我目前已知的兩種使用方法是 include include typedef int pinnt define pp int int funca int a,int b int funcb int a,int b int main int argc,cha...

delphi中函式指標的使用

delphi中可以通過函式指標把乙個函式作為引數來傳遞,然後在另外乙個函式中呼叫。1 首先,申明函式指標型別tfunctionparameter type tfunctionparameter function const value integer string 函式指標 2 定義準備被作為引數傳...

關於C 中函式指標的使用

一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型別。只有第一...