先簡單寫三個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函式。
訂閱:
張貼留言 (Atom)
0 Response to "C++的function pointer用法"
張貼留言
歡迎留下您的回應