函式指標(function pointer)
文章推薦指數: 80 %
Function Pointer 顧名思義,就是指向Function 的指標。
在C 語言中,不論是variable、array、struct、或是function(一段程式碼),都有所屬的起始記憶體位置。
parallel_processing
Introduction
程序/行程(Process)
平行處理系統類別
MPI(Messagepassinginterface)
MPICH安裝與設定
點對點通訊
集合通訊
Communicator
One-sidedcommunication
TORQUE
OpenMP
OpenMP設定
pthread
ApacheSpark
Spark安裝與設定
RDD介紹
基本程式設計
HDFS
MapReduce介紹
CUDA
安裝(installation)
第一個程式
PyCUDA
Theano
Tensorflow
XORproblem
Cython
編譯
平行處理
PEP
numpy
Pandas
C語言語法
Clibrary
Pointer
Doublepointer
Functionpointer
Struct
Memoryleak
C++參考
C++物件
C++樣版
x86函式調用協定
編譯器參數
cmake
Pythonclass設計
nosetest
py.test
BLASlibrary
Linpackbenchmark
PoweredbyGitBook
Functionpointer
函式指標(functionpointer)
FunctionPointer顧名思義,就是指向Function的指標。
在C語言中,不論是variable、array、struct、或是function(一段程式碼),都有所屬的起始記憶體位置。
變數的指標指向變數的位址,同樣的,functionpointer(函式指標)也是指向函式的位址的指標。
而每個function的啟始記憶體位置,即為function的名稱。
而functionpointer的宣告跟使用function時所要注意的地方是相同的,有以下幾點必須注意:
回傳值型態(returntype)
參數數量(augumentcount)
參數型態(argumenttype)
FunctionPointer:指向函數的指標。
int(*pfunc)(int);
Functionreturnapointer:回傳指標的函數。
int*func(int);
Functionpointerreturnapointer。
int(pfunc)(int);
//函式宣告如下
voidfunc1(intint1,charchar1);
/*指向func1的指標如下:
*這樣的寫法應理解成:funcPtr1是一個函數指標,它指向的函數接受int與char兩個參數並回傳void。
(signature)
*/
void(*funcPtr1)(int,char);
/*如果今天有另一個函式有相同的參考簽名
*則funcPtr1也能指向func2。
*/
voidfunc2(intint2,charchar2);
//函式指標指向函式1
funcPtr1=&func1;
//函式指標指向函式2
funcPtr1=&func2;
//在宣告時就直接給予初值,則如下:
void(*funcPtr1)(int,char)=&func1;//&亦可省略
functionpointer做為函式的參數
intdo_math(floatarg1,intarg2){
returnarg2;
}
//不使用typedef的原始宣告方法
intcall_a_func(int(*call_this)(float,int)){
intoutput=call_this(5.5,7);
returnoutput;
}
//使用typedef的宣告方法
typedefint(*MathFunc)(float,int);
intcall_a_func2(MathFunccall_this){
intoutput=call_this(5.5,7);
returnoutput;
}
intfinal_result=call_a_func(do_math);
functionpointerarray用法
根據state變數的狀態去呼叫對應的函式。
state:0,執行run()
state:1,執行stop()
state:2,執行exit()
voidrun(){printf("start\r\n");}
voidstop(){printf("stop\r\n");}
voidexit(){printf("exit\r\n");}
staticvoid(*command[])(void)={run,stop,exit};
intOnStateChange(uintstate){
if(state>3){
printf("Wrongstate!\n");
returnfalse;
}
command[state]();
return0;
}
resultsmatching""
Noresultsmatching""
延伸文章資訊
- 1函式指標(function pointer)
Function Pointer 顧名思義,就是指向Function 的指標。在C 語言中,不論是variable、array、struct、或是function(一段程式碼),都有所屬的起始記...
- 2[C語言]function pointer的應用[一]: pass function to function
[C語言]function pointer的應用[一]: pass function to function. 我們在寫程式的時候,會對一個程式傳入參數。參數的性質可以是一般的變數(pass b...
- 3Difference between function pointers and pointer to function - CodeProject
- 4Function Pointer in C - Tutorialspoint
- 5(c/c++) Function Pointer函式指標兩三事 ... - 草之程式小記
Function Pointer (中文直譯「函式指標」),即為儲存某一個函式起始memory address的變數,此變數可以提供我們在之後進行呼叫。 乍聽之下,function ...