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)然也損失了靈活性
相關(guān)文章
Qt實(shí)現(xiàn)小功能之圓形進(jìn)度條的方法詳解
在Qt自帶的控件中,只有垂直進(jìn)度條、水平進(jìn)度條兩種。在平時(shí)做頁(yè)面開(kāi)發(fā)時(shí),有些時(shí)候會(huì)用到圓形進(jìn)度條,比如說(shuō):下載某個(gè)文件的下載進(jìn)度。本文就來(lái)實(shí)現(xiàn)一個(gè)圓形進(jìn)度條,需要的可以參考一下2022-10-10C語(yǔ)言如何在字符數(shù)組中插入一個(gè)字符
這篇文章主要介紹了C語(yǔ)言如何在字符數(shù)組中插入一個(gè)字符,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06超詳細(xì)解析C++實(shí)現(xiàn)歸并排序算法
歸并排序是比較穩(wěn)定的排序方法。它的基本思想是把待排序的元素分解成兩個(gè)規(guī)模大致相等的子序列。本文將用C++實(shí)現(xiàn)這一排序算法,需要的可以參考一下2022-09-09Qt GUI圖形圖像開(kāi)發(fā)之QT表格控件QTableView,QTableWidget復(fù)雜表頭(多行表頭) 及凍結(jié)、固定特
這篇文章主要介紹了Qt GUI圖形圖像開(kāi)發(fā)之QT表格控件QTableView,QTableWidget復(fù)雜表頭(多行表頭) 及凍結(jié)、固定特定的行的詳細(xì)方法與實(shí)例,需要的朋友可以參考下2020-03-03C++中set/multiset容器詳解(附測(cè)試用例與結(jié)果圖)
set/multiset屬于關(guān)聯(lián)式容器,底層結(jié)構(gòu)是用二叉樹(shù)實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于C++中set/multiset容器的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02C++標(biāo)準(zhǔn)模板庫(kù)STL深入講解
STL提供了一組表示容器、迭代器、函數(shù)對(duì)象和算法的模板。容器是一個(gè)與數(shù)組類似的單元,可以存儲(chǔ)若干個(gè)值。STL容器是同質(zhì)的,即存儲(chǔ)的值的類型相同:算法是完成特定任務(wù)(如對(duì)數(shù)組進(jìn)行排序或在鏈表中查找特定值)的處方2022-12-12用C語(yǔ)言求冪函數(shù)和指數(shù)函數(shù)的方法
這篇文章主要介紹了用C語(yǔ)言求冪函數(shù)和指數(shù)函數(shù)的方法,即pow()函數(shù)和sqrt()函數(shù)的使用,需要的朋友可以參考下2015-08-08C語(yǔ)言 文件的隨機(jī)讀寫(xiě)詳解及示例代碼
本文主要介紹C語(yǔ)言 文件的隨機(jī)讀寫(xiě),這里整理了相關(guān)資料及示例代碼以便大家學(xué)習(xí)參考,學(xué)習(xí)此部分內(nèi)容的朋友可以參考下2016-08-08