C#委托所蘊(yùn)含的函數(shù)指針概念詳細(xì)解析
原則:
1、函數(shù)指針,實(shí)際上是函數(shù)編碼后的指令在內(nèi)存中的首地址,在C++/C中,這個(gè)地址可以用函數(shù)名直接使用
一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)的時(shí)候,就可以把被調(diào)用函數(shù)以函數(shù)指針的形式作為參數(shù)傳入
2、回調(diào)函數(shù)callback使用的技術(shù)就是函數(shù)指針:
回調(diào)函數(shù)就好像是一個(gè)中斷處理函數(shù),系統(tǒng)在符合你設(shè)定的條件時(shí)自動(dòng)調(diào)用。為此,你需要做三件事:
1). 聲明;
2). 定義;
3). 設(shè)置觸發(fā)條件,就是在你的函數(shù)中把你的回調(diào)函數(shù)名稱轉(zhuǎn)化為地址作為一個(gè)參數(shù),以便于DLL調(diào)用。
回調(diào)函數(shù)是應(yīng)用程序提供給Windows系統(tǒng)DLL或其它DLL調(diào)用的函數(shù),一般用于截獲消息、獲取系統(tǒng)信息或處理異步事件。應(yīng)用程序把回調(diào)函數(shù)的地址指針告訴DLL,而DLL在適當(dāng)?shù)臅r(shí)候會(huì)調(diào)用該函數(shù)?;卣{(diào)函數(shù)必須遵守事先規(guī)定好的參數(shù)格式和傳遞方式,否則DLL一調(diào)用它就會(huì)引起程序或系統(tǒng)的崩潰。通常情況下,回調(diào)函數(shù)采用標(biāo)準(zhǔn)WindowsAPI的調(diào)用方式,即__stdcall,當(dāng)然,DLL編制者可以自己定義調(diào)用方式,但客戶程序也必須遵守相同的規(guī)定。在__stdcall方式下,函數(shù)的參數(shù)按從右到左的順序壓入堆棧,除了明確指明是指針或引用外,參數(shù)都按值傳遞,函數(shù)返回之前自己負(fù)責(zé)把參數(shù)從堆棧中彈出。
3、C#中用委托這種概念實(shí)現(xiàn)了函數(shù)指針技術(shù)而已,另外.ent提供額外的安全性,當(dāng)然也損失了靈活性
上一篇:linux之sed命令的用法
欄 目:C語言
本文標(biāo)題:C#委托所蘊(yùn)含的函數(shù)指針概念詳細(xì)解析
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/4030.html
您可能感興趣的文章
- 01-10深入解析C中的數(shù)值與
- 01-10如何在二叉樹中找出和為某一值的所有路徑
- 01-10深入探討:linux中遍歷文件夾下的所有文件
- 01-10STl中的排序算法詳細(xì)解析
- 01-10C#中委托的基本用法總結(jié)
- 01-10c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表
- 01-10枚舉窗口句柄后關(guān)閉所有窗口示例
- 01-10window調(diào)用api列出當(dāng)前所有進(jìn)程示例
- 01-10VC MFC非模態(tài)對(duì)話框的實(shí)現(xiàn)方法
- 01-10C++實(shí)現(xiàn)漢諾塔算法經(jīng)典實(shí)例


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法