洲美↔淡水單車行

07-03-2011

最近一陣子工作的忙碌,假日只想在家休息,似乎已忘記汗水、陽光的滋味。信如的邀約,讓我有動力再次感受運動的暢快

未完成單車環島行之啟程

07-01-2009

沒有任何詳盡計畫,憑著一顆尋夢的心去環島。或許沒辦法完成,但我想過程中的點點滴滴才會是這段旅程中最可貴的收穫。2009-07-01攝於住家前。

野柳國家風景區

07-01-2009

於環島第一天途中到野柳國家風景區。著名的女王頭果然是遊客的最愛。當天遇到韓國旅行團、中國旅行社,一大群人都搶著跟這顆女王頭拍照。地上有標示, 告訴你站什麼位置,在哪個地方拍角度才會像女王頭,還頗貼心的。

巧姐文定之喜

11-29-2009

巧慧姐成為大學同學中第一個成就終身大事的幸運兒。這也是我生平第一次參加自己朋友喜宴,穿著、禮金這一切對我來說很新鮮。著西裝到場的我雖然被虧太正式,但這種特殊場合中特別一點又何妨!畢業後同學們各自在不同的領域中奮鬥,我想以後這種喜宴場合會是另一種同學會的形式吧!恭喜巧慧姐,祝妳百年好合、早生貴子!

先簡單寫三個funciton,其中sort函式有兩個參數,第一個參數讀入數列的pointer,而第二個參數則是function pointer,即讀入一個function。

max函式是比較兩個值並傳回較大值;min函式是比較兩個值並傳回較小值。

程式碼如下。


#include<iostream>

using namespace std;

int max(int, int);
int min(int, int);
void sort(int*, int (*)(int, int));

int main()
{
int a[] = {1, 2, 4, 5, 3};

sort(a, max);
sort(a, min);
return 0;
}

void sort(int* ptr, int (*array)(int, int)){
cout << array(ptr[2], ptr[1]) << endl;
}

int max(int a, int b){
if(a > b){
return a;
}
else{
return b;
}
}

int min(int a, int b){
if(a < b){
return a;
}
else{
return b;
}
}


其中sort的function prototype第二個參數寫法為int (*)(int, int)。

所代表意思為傳入一個function,這個function傳回值為int,並且帶有兩個參數。而那個(*)所代表的意思就是要讀入一個function pointer。

因此sort的第二個參數可以傳入max函式或者是min函式。

0 Response to "C++的function pointer用法"

張貼留言

歡迎留下您的回應