VB.NET中指針的作用是什么,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
成都創(chuàng)新互聯(lián)為客戶(hù)提供專(zhuān)業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開(kāi)發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開(kāi)發(fā)、WEB系統(tǒng)開(kāi)發(fā)、微信二次開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)等網(wǎng)站方面業(yè)務(wù)。
在生活中我們所看到的指針是真實(shí)的,可是在我們的編程中所謂的指針是感念性的,抽象的,讓人很難理解的。這里我們就詳細(xì)的談?wù)勱P(guān)于VB.NET指針問(wèn)題。不需要去找什么標(biāo)準(zhǔn)的定義,它就是一個(gè)32位整數(shù),在C語(yǔ)言和在VB里都可以用Long類(lèi)型來(lái)表示。在32位Windows平臺(tái)下它和普通的32位長(zhǎng)整型數(shù)沒(méi)有什么不同,只不過(guò)它的值是一個(gè)內(nèi)存地址,正是因?yàn)檫@個(gè)整數(shù)象針一樣指向一個(gè)內(nèi)存地址,所以就有了指針的概念。
妙用VB.NET窗體實(shí)現(xiàn)背景花紋
教你如何制作VB.NET封面
關(guān)于VB.NET編程原則規(guī)范總結(jié)
談?wù)勱P(guān)于VB.NET命名約定
輕輕松松學(xué)習(xí)使用VB.NET常量
有統(tǒng)計(jì)表明,很大一部分程序缺陷和內(nèi)存的錯(cuò)誤訪問(wèn)有關(guān)。正是因?yàn)橹羔樦苯雍蛢?nèi)存打交道,所以指針一直以來(lái)被看成一個(gè)危險(xiǎn)的東西。以至于不少語(yǔ)言,如著名的JAVA,都不提供對(duì)指針操作的支持,所有的內(nèi)存訪問(wèn)方面的處理都由編譯器來(lái)完成。而象C和C++,指針的使用則是基本功,指針給了程序員極大的自由去隨心所欲地處理內(nèi)存訪問(wèn),很多非常巧妙的東西都要依靠指針技術(shù)來(lái)完成。
關(guān)于一門(mén)高級(jí)的程序設(shè)計(jì)語(yǔ)言是不是應(yīng)該取消指針操作,關(guān)于沒(méi)有指針操作算不算一門(mén)語(yǔ)言的優(yōu)點(diǎn),我在這里不討論,因?yàn)榛ヂ?lián)網(wǎng)上關(guān)于這方面的沒(méi)有結(jié)果的討論,已經(jīng)造成了占用幾個(gè)GB的資源。無(wú)論最終你是不是要下定決心修習(xí)指針技術(shù)《葵花寶典》,了解這門(mén)功夫總是有益處的。
注意:在VB里,官方是不鼓勵(lì)使用什么指針的,本文所講的任何東西你都別指望取得官方的技術(shù)支持,一切都要靠我們自己的努力,一切都更刺激!讓我們開(kāi)始神奇的VB指針探險(xiǎn)吧!來(lái)看看VB.NET指針能做什么?有什么用?
先來(lái)看兩個(gè)程序,程序的功能都是交換兩個(gè)字串:
'標(biāo)準(zhǔn)的做法SwapStr Sub SwapStr(sA As String, sB As String) Dim sTmp As String sTmp = sA: sA = sB: sB = sTmp End Sub
'用指針的做法SwapPtr
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)Sub SwapPtr(sA As String, sB As String)Dim lTmp As Long
CopyMemory lTmp, ByVal VarPtr(sA), 4
CopyMemory ByVal VarPtr(sA), ByVal VarPtr(sB), 4
CopyMemory ByVal VarPtr(sB), lTmp, 4
End Sub
你是不是以為***個(gè)程序要快,因?yàn)樗粗?jiǎn)單而且不用調(diào)用API(調(diào)用API需要額外的處理,VB文檔明確指出大量調(diào)用API將降低程序性能)。但事實(shí)上,在VB集成環(huán)境中運(yùn)行,程序二要比程序一快四分之一;而編譯成本機(jī)代碼或p-code,程序二基本上要比程序一快一倍。下面是兩個(gè)函數(shù)在編譯成本機(jī)代碼后,運(yùn)行不同次數(shù)所花時(shí)間的比較:
運(yùn)行100000次,SwapStr需要170毫秒,SwapPtr需要90毫秒。 運(yùn)行200000次,SwapStr需要340毫秒,SwapPtr需要170毫秒。 運(yùn)行2000000次,SwapStr需要3300毫秒,SwapPtr需要1500毫秒。
的確,調(diào)用API是需要額外指令來(lái)處理,但是由于使用了VB.NET指針技術(shù),它沒(méi)有進(jìn)行臨時(shí)字串的分配和拷貝,因此速度提高了不少。
看完上述內(nèi)容,你們掌握VB.NET中指針的作用是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
本文名稱(chēng):VB.NET中指針的作用是什么
網(wǎng)址分享:http://aaarwkj.com/article18/igdcgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站內(nèi)鏈、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、標(biāo)簽優(yōu)化、用戶(hù)體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)