日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
VB.NET指針在實際應用中作用體現(xiàn)

有些語言比如C語言中,存在有指針。很多人在學習編程語言的時候,碰到指針的問題都是非常頭疼的。那么VB.NET指針又會呈現(xiàn)出一個什么樣的情況呢?我們是不是可以很方便的的使用這一操作呢?#t#

創(chuàng)新互聯(lián)建站是一家專業(yè)提供新榮企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計、網(wǎng)站制作、H5高端網(wǎng)站建設、小程序制作等業(yè)務。10年已為新榮眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。

一、為什么要使用VB.NET指針:

C/C++中都可以操作指針,用指針可以很方便的訪問到內(nèi)存區(qū)域,C++中的指針其實就是數(shù)組的一個訪問方式而已,由于其使用比較方便,可以非常方便的進行對內(nèi)存區(qū)域的賦值與讀取操作,因此,用慣了C++的程序員樂此不疲。

其實,我們在用VB開發(fā)一般程序的時候是沒有必要用指針去訪問內(nèi)存某區(qū)域的。因為VB為我們提供了一個非常方便的訪問方法——就是VB的數(shù)組。用數(shù)組可以很方便的使用一組數(shù)據(jù)。然而,為什么,在VB中我們非要去實現(xiàn)指針的操作呢?

1、數(shù)據(jù)操作速度的需求

比如,需要針對兩個數(shù)組之間的復制操作,需要給數(shù)組做一個循環(huán),然后在逐個的添加到新的數(shù)組中,用指針的方法速度會快很多。

2、在對系統(tǒng)庫函數(shù)的調(diào)用時

Windows中的User32.dll\GDI32.dll\Kernel32.dll等這些系統(tǒng)庫函數(shù)中,很多都是接收指針參數(shù)的,因此,如果VB需要調(diào)用這些函數(shù)的時候,就必須要進行指針的傳參。

二、VB.NET指針怎么用

要想弄明白VB怎么使用指針,就必須要弄明白兩件事,第一,如何取得數(shù)組的指針,第二,如何將指針所指向的數(shù)組取出來。

A、在講解這兩個問題之前,我們需要了解幾個問題:

1、VB的數(shù)組與C++的數(shù)組的區(qū)別

有可能,大家現(xiàn)在認為VB的數(shù)組和C++的數(shù)組沒有任何區(qū)別,都是內(nèi)存中的一段地址而已,其實不然。

C++中是真的數(shù)組,真的是一段地址,而且,當你的指針訪問超出了數(shù)組的范圍,也沒人理你,只是很容易導致系統(tǒng)崩潰而已。

而VB數(shù)組其實是一個結(jié)構(gòu)體,在這個結(jié)構(gòu)體中包含了關于這個數(shù)組的描述信息,其結(jié)構(gòu)類似如下:

Private Type VB數(shù)組 數(shù)組維數(shù) 數(shù)組大小 真實的數(shù)組 End Type 2、Copymemory系統(tǒng)函數(shù)

這個函數(shù)有點像Java中的ArrayCopy函數(shù),就是將兩段內(nèi)存空間進行復制操作。它的聲明是這樣的:

 
 
 
  1. Public Declare Sub CopyMemory Lib 
    "kernel32" Alias "RtlMoveMemory" 
    (Destination As Any, Source As 
    Any, ByVal Length As Long)
     函數(shù)原型   
  2. VOID CopyMemory(  
  3. PVOID Destination,   
  4. CONST VOID *Source,   
  5. DWORD Length   
  6. ); 

第一個參數(shù):目的地址指針

第二個參數(shù):源地址指針

第三個參數(shù):復制的大小

請注意,在CopyMemory的VB聲明中,傳遞的源與目的是Any類型,也就是說可以是任何類型的變量。

B、如何用VB指針

1、如何取得數(shù)組的指針

請看如下程序:

 
 
 
  1. pOutputArray As Long 
    outputArray()   
  2. As Byte ReDim 
    outputArray(100)   
  3. As Byte pOutputArray =
     VarPtr(outputArray(0)) 

說明:

我們聲明了一個Byte數(shù)組outputArray,用VarPtr函數(shù),取出數(shù)組的指針賦給了Long型變量pOutputArray。

2、如何將指針所指向的數(shù)組取出來

請看如下程序:

 
 
 
  1. CopyMemory ByVal pOutputArray, 
    ByVal pData, UBound(outputArray) 

說明:

pData是一個內(nèi)存塊的指針,通過這句話的執(zhí)行,我們得到了pData指向的內(nèi)存區(qū)域中的數(shù)據(jù)到pOutputArray數(shù)組中。

三、高級應用:取得函數(shù)的VB.NET指針

有時候,系統(tǒng)函數(shù)庫調(diào)用中會要求有回調(diào)函數(shù),而將回調(diào)函數(shù)以參數(shù)進行傳遞時,并不能傳入回調(diào)函數(shù)名,而是需要將回調(diào)函數(shù)的地址傳參,這時候,我們就需要得到回調(diào)函數(shù)的地址。在這里我只給出例子代碼,有興趣的朋友可以去研究。

 
 
 
  1. Public Sub RegisterWinProc
    (ByVal hwnd As Long)   
  2. '傳入hWnd是本窗口的句柄   
  3. 'GetWindowLong從指定窗口的
    結(jié)構(gòu)中取得信息   
  4. prevWndProc = GetWindowLong
    (hwnd, GWL_WNDPROC)   
  5. 'SetWindowLong在窗口結(jié)構(gòu)中為
    指定的窗口設置信息   
  6. SetWindowLong hwnd, GWL_
    WNDPROC, AddressOf   
  7. WndProc DesthWnd = hwnd   
  8. End Sub  

四、結(jié)束語

大家看,VB.NET指針在進行實際操作的時候,只要掌握了相應的方法,是不是VC在這時候也就黯然失色了呢?


分享標題:VB.NET指針在實際應用中作用體現(xiàn)
瀏覽地址:http://m.5511xx.com/article/djepedj.html