原則:
1、函數指針,實際上是函數編碼后的指令在內存中的首地址,在C++/C中,這個地址可以用函數名直接使用
一個函數調用另一個函數的時候,就可以把被調用函數以函數指針的形式作為參數傳入
2、回調函數callback使用的技術就是函數指針:
回調函數就好像是一個中斷處理函數,系統在符合你設定的條件時自動調用。為此,你需要做三件事:
1). 聲明;
2). 定義;
3). 設置觸發條件,就是在你的函數中把你的回調函數名稱轉化為地址作為一個參數,以便于DLL調用。
回調函數是應用程序提供給Windows系統DLL或其它DLL調用的函數,一般用于截獲消息、獲取系統信息或處理異步事件。應用程序把回調函數的地址指針告訴DLL,而DLL在適當的時候會調用該函數。回調函數必須遵守事先規定好的參數格式和傳遞方式,否則DLL一調用它就會引起程序或系統的崩潰。通常情況下,回調函數采用標準WindowsAPI的調用方式,即__stdcall,當然,DLL編制者可以自己定義調用方式,但客戶程序也必須遵守相同的規定。在__stdcall方式下,函數的參數按從右到左的順序壓入堆棧,除了明確指明是指針或引用外,參數都按值傳遞,函數返回之前自己負責把參數從堆棧中彈出。
3、C#中用委托這種概念實現了函數指針技術而已,另外.ent提供額外的安全性,當然也損失了靈活性
|
新聞熱點
疑難解答
圖片精選