2011年5月19日 星期四

function pointer

一層一層解開...
原式子表示 pf 是一個變數, 型態是一種function, 這個pf function接受的參數是一個int, 回傳的型態是一個function pointer, 這個回傳的functioni pointer接受的參數有二, int* 和 int, 其回傳型別則是int. 或者可以寫成 int (*)(int*, int) (*pf) (int).

例子:
// 定義回傳型別
typedef int (*returnFuntionType) (int*, int);

// 任意舉一個型別為 returnFuntionType 的 fun1為例
int fun1(int* a, int b) {
return a==0 ? b:b+(*a);
}

// 再舉一個跟 pf 同型別的 fun2(忽略參數)當例子
returnFuntionType fun2(int) {
return fun1;
}

// 測試的涵式(注意參數型別就是pf)
int fun3(int (*pf(int)) (int*,int))
{
int a(3), b(4);
returnFuntionType pfn = pf(0);
return pfn(&a, b);
}

int main()
{
int result = fun3(fun2); // 也就是說 fun2的確是跟 pf 同型

return result - 7; // OK! return 0
}

沒有留言:

張貼留言