函式指標淺談 (轉)
/*
看到 ilov大作“有沒有試過將作為引數(parameter)來傳遞?”
(ASP?Id=18162">http://www.csdn.net/develop/Read_Article.asp?Id=18162).
頗有感觸,下面是我關於“函式指標”和作為引數傳遞的實踐內容,
不多言,大家親自體會一下即知。
本人水平有限,歡迎指正(絕不是謙虛^_^)。
如有錯誤,to:leepyzh@21cn.com">mailto:leepyzh@21cn.com
*/
//如下
//Test on 2000 + 6.0
//
//====================================//
#include "stdafx.h"
typedef bool (*compfunc)(int ,int );
//函式的指標
//compfunc的意思就是:
/*
指向返回值是bool的函式指標
compfunc a ====== bool (*a)(int ,int)
*/
//兩個簡單的函式,著相反的功能
bool littletobig(int a,int b) {return bbool bigtolittle(int a,int b) {return b>a;}
void (int &a, int &b){int temp;temp = a,a = b,b = temp;}
//函式的指標為引數
//任意一個陣列排序了
//當傳入littletobig,從小到大排序,反之bigtolittle,從大到小
//兩種函式宣告方法一樣。
#if 0
void sort(int array[],const int size,bool (*comp)(int,int))
#else
void sort(int array[],const int size,compfunc comp)
#endif
{
int i = 0;
for(;i < size-1; i++){
if(comp(array[i],array[i+1]))
{
exchange(array[i],array[i+1]);
sort(array, i+1 ,comp); //遞迴排序
}
}
}
int main(int argc, char* argv[])
{
int arr[] = {3,4,2,1,-1,999,234,34,56,-2,-2};
//函式指標宣告,一下四種情況完全相同//
//==================================================//
compfunc up = littletobig,down = bigtolittle;
sort(arr,sizeof(arr)/sizeof(int),up);
sort(arr,sizeof(arr)/sizeof(int),down);
//==================================================//
bool (*up2)(int ,int) = littletobig;
bool (*down2)(int ,int); down2= bigtolittle;
sort(arr,sizeof(arr)/sizeof(int),up2);
sort(arr,sizeof(arr)/sizeof(int),down2);
//=================================================//
compfunc funcarray[2] = {littletobig,bigtolittle};
sort(arr,sizeof(arr)/sizeof(int),funcarray[0]);
sort(arr,sizeof(arr)/sizeof(int),funcarray[1]);
//=================================================//
bool (* funcarray2[2])(int,int) = {littletobig};
funcarray2[1] = bigtolittle;
sort(arr,sizeof(arr)/sizeof(int),funcarray[0]);
sort(arr,sizeof(arr)/sizeof(int),funcarray[1]);
//=================================================//
return 0;
}
//
//
//Reference to http://www.csdn.net/develop/Read_Article.asp?Id=18162.
//
//
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956497/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談指標 (轉)指標
- 【原創】淺談指標(十一)alloca函式指標函式
- 【原創】淺談指標(八)字串相關函式(下集)指標字串函式
- 淺談C++指標直接呼叫類成員函式C++指標函式
- 指標函式 和 函式指標指標函式
- 函式指標函式指標
- [C++] 成員函式指標和函式指標C++函式指標
- 【原創】淺談指標(一)指標
- 【原創】淺談指標(二)指標
- 【原創】淺談指標(三)指標
- 【原創】淺談指標(四)指標
- 淺談Orabbix監控指標指標
- 淺談Object Pascal的指標Object指標
- 【不在混淆的C】指標函式、函式指標、回撥函式指標函式
- C#中的函式指標 (轉)C#函式指標
- 函式指標之回撥函式和轉移表函式指標
- 函式名/函式地址/函式指標函式指標
- 宣告與函式、函式指標函式指標
- 函式指標呼叫函式指標
- 淺談eval函式函式
- 淺談生成函式函式
- 淺談尤拉函式函式
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- 函式指標&回撥函式Callback函式指標
- c++ 函式指標C++函式指標
- 關於函式指標函式指標
- 指向函式的指標函式指標
- C++(函式指標)C++函式指標
- 函式指標基礎函式指標
- typedef void (*Fun) (void) 的理解——函式指標——typedef函式指標函式指標
- 宣告函式指標並實現回撥 (轉)函式指標
- typedef使用大全3(指向函式的指標) (轉)函式指標
- 淺談Swift中的函式式Swift函式
- Rust中的函式指標Rust函式指標
- vector中存放函式指標函式指標
- C語言 函式指標C語言函式指標
- cpp:"函式指標"的方法函式指標
- 函式指標練習題函式指標