1. 程式人生 > 實用技巧 >CSS3文字(text)模型

CSS3文字(text)模型

用途: 
函式指標通常用來實現回撥,也可以用來對模組呼叫以函式表的形式進行優化。 
使用方法: 
 1、定義函式指標型別 
使用typedef更直觀更方便 
// 定義一個原型為int Fun( int a );的函式指標 
typedef int (*PTRFUN) ( int aPara ); 
typedef的功能是定義新的型別。這裡定義了一種PTRFUN的型別,並定義這種型別為指向某種函式的指標,這種函式以一個int為引數並返回char型別。後面就可以像使用int,char一樣使用PTRFUN了。 
 2、函式指標變數的定義 
PTRFUN pFun; // pFun 為函式指標變數名 
int
(*pFun2) ( int a ); // pFun2也是函式指標變數名 3、函式指標作為函式的引數傳遞 // 定義回撥函式 int CallBack( int a ) { return ++a; } // 定義回撥者函式 void Caller( PTRFUN cb ) // void Caller( int (*cb) ( int ) ) // 也可這樣申明 { int nPara = 1; int nRet = cb( nPara ); } // 使用回撥 void Test() { Caller( CallBack ); // 直接使用回撥函式 PTRFUN cb = CallBack; //
int (*cb) ( int ); cb = CallBack; int nRet1 = cb( 99 ); // nRet1 = 100; } 4、函式指標的指標使用 // 定義函式指標的指標 typedef int (**PTRPTRFUN) ( int aPara ); // 函式指標的指標作為引數 void PtrCaller( PTRPTRFUN cb ) // void PtrCaller( PTRFUN* cb ) // 指標申明 // void PtrCaller( int (**cb) ( int ) ) // 原型申明 { int nRet = (*cb)(999); // nRet = 1000;
} // 使用函式指標的指標 void Test() { PTRFUN cb = CallBack; PtrCaller( &cb ); } 5、函式指標陣列的使用 // 函式指標陣列的定義 PTRFUN fArray[10]; // int (*fArray[10]) ( int ); // 原型定義 for ( int i = 0; i < 10; i++ ) { fArray[i] = CallBack; int nRet = fArray[i](i); // nRet = i+1; } 使用例項: 這裡給出一個使用函式指標的簡單例子: //------------------------------------------------------ #include typedef int (*PTRFUN) ( int aPara , int bPara); int func1(int Pa, int Pb); int func2(int Pa, int Pb); int func3(int Pa, int Pb); int func4(int Pa, int Pb); void main() { int i = 0; int j = 0; PTRFUN pFuncArray[4] = {func1, func2, func3, func4}; PTRFUN pFunc; for(i = 3; i >= 0; i --) { pFunc = pFuncArray[i]; printf("Output is: %d \n", (*pFunc)(i,i)); } } int func1(int Pa, int Pb) { printf("func1 with input para %d, %d \n", Pa, Pb); return Pa + Pb; } int func2(int Pa, int Pb) { printf("func2 with input para %d, %d \n", Pa, Pb); return Pa - Pb; } int func3(int Pa, int Pb) { printf("func3 with input para %d, %d \n", Pa, Pb); return Pa * Pb; } int func4(int Pa, int Pb) { printf("func4 with input para %d, %d \n", Pa, Pb); return (Pb == 0)? 0xffff : (Pa / Pb); } 輸出為: func4 with input para 3, 3 Output is: 1 func3 with input para 2, 2 Output is: 4 func2 with input para 1, 1 Output is: 0 func1 with input para 0, 0 Output is: 0