成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB無(wú)所不能之指針介紹

開(kāi)發(fā) 后端
本文對(duì)VB指針的用法做出了詳細(xì)的說(shuō)明。VB中為什么使用指針呢?一是為了數(shù)據(jù)操作速度的需求,二是考慮到在對(duì)系統(tǒng)庫(kù)函數(shù)的調(diào)用時(shí)需要進(jìn)行的指針的傳參。

一、為什么VB要用指針:

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

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

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

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

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

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

二、VB怎么用指針

要想弄明白VB怎么使用指針,就必須要弄明白兩件事,第一,如何取得數(shù)組的指針,第二,如何將指針?biāo)赶虻臄?shù)組取出來(lái)。

A、在講解這兩個(gè)問(wèn)題之前,我們需要了解幾個(gè)問(wèn)題:

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

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

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

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

  1. Private Type VB數(shù)組  
  2.    數(shù)組維數(shù)  
  3.    數(shù)組大小  
  4.    真實(shí)的數(shù)組  
  5. End Type 

2、Copymemory系統(tǒng)函數(shù)

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

  1. Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long

  函數(shù)原型

  VOID CopyMemory(

  PVOID Destination,

  CONST VOID *Source,

  DWORD Length

  );

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

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

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

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

B、如何用VB指針

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

請(qǐng)看如下程序:

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

說(shuō)明:

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

2、如何將指針?biāo)赶虻臄?shù)組取出來(lái)

請(qǐng)看如下程序:

CopyMemory ByVal pOutputArray, ByVal pData, UBound(outputArray)

說(shuō)明:

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

三、高級(jí)應(yīng)用:取得函數(shù)的指針

有時(shí)候,系統(tǒng)函數(shù)庫(kù)調(diào)用中會(huì)要求有回調(diào)函數(shù),而將回調(diào)函數(shù)以參數(shù)進(jìn)行傳遞時(shí),并不能傳入回調(diào)函數(shù)名,而是需要將回調(diào)函數(shù)的地址傳參,這時(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)中為指定的窗口設(shè)置信息  
  6. SetWindowLong hwnd, GWL_WNDPROC, AddressOf WndProc  
  7. DesthWnd = hwnd  
  8. End Sub 

四、結(jié)束語(yǔ)

大家看,VB在處理指針的時(shí)候,只要掌握了相應(yīng)的方法,是不是VC在這時(shí)候也就黯然失色了呢?

本文出自 “《Java程序員,上班那點(diǎn)事兒》的那點(diǎn)事兒” 博客。

【編輯推薦】

  1. OO世界中的核心概念 .NET中的多態(tài)
  2. ASP.NET開(kāi)發(fā)程序過(guò)程中值得注意的兩個(gè)地方
  3. 全面總結(jié).NET 4.0新特性:C#和VB.NET的取長(zhǎng)補(bǔ)短
  4. 深入理解Java多態(tài)性
  5. ASP.NET的錯(cuò)誤處理機(jī)制
責(zé)任編輯:yangsai 來(lái)源: 51CTO博客
相關(guān)推薦

2021-04-07 10:02:18

人工智能技術(shù)互聯(lián)網(wǎng)

2013-05-22 14:05:18

2015-10-28 15:47:22

谷歌物聯(lián)網(wǎng)互聯(lián)網(wǎng)

2015-04-30 14:53:43

Build 2015微軟Azure

2025-02-17 00:00:25

CSS工具樣式

2021-04-17 23:05:29

手機(jī)黑科技APP

2021-08-16 10:13:26

AI DeepMind人工智能

2023-11-28 12:09:43

Linux網(wǎng)絡(luò)工具

2019-12-19 14:17:11

以太坊去中心化加密貨幣

2014-06-13 02:21:14

2020-03-09 10:43:28

人工智能疫情機(jī)器人

2014-03-11 23:02:00

2013-04-09 14:23:12

3D打印

2021-04-05 22:37:29

微信小程序手機(jī)

2011-09-12 15:32:58

2023-09-07 07:08:49

ChatGPTAI節(jié)點(diǎn)

2021-02-07 00:29:14

支付寶互聯(lián)網(wǎng)返鄉(xiāng)隔離政策

2023-09-06 06:38:18

AMDCPUGPU

2024-06-14 09:21:56

2021-04-20 10:47:59

手機(jī)APP科技
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一区二区三区中文字幕 | 超碰97人人人人人蜜桃 | 国产精品一区二区av | 成人激情视频免费在线观看 | 日日操av | 亚洲午夜视频 | 精品国产乱码一区二区三区a | 亚洲视频一区在线观看 | 伊人导航| 精品不卡 | 美女视频网站久久 | 国产美女在线观看 | 超碰一区二区 | 美美女高清毛片视频免费观看 | 欧美精品第一区 | 欧美日韩精品在线一区 | 亚洲精品久久久久久久不卡四虎 | 中文字幕一区在线 | 亚洲综合天堂 | 天天色天天色 | 欧美日一区 | 国产精品视频 | 九九在线视频 | 黄视频免费在线 | 福利网站在线观看 | 91视频88av| 一区二区三区国产精品 | 日韩欧美三区 | 久久成人精品视频 | 欧美精品一区二区三 | 日韩精品亚洲专区在线观看 | 日韩国产精品一区二区三区 | www国产成人免费观看视频 | 国产精品视频在线播放 | www.中文字幕.com | 亚洲福利视频一区二区 | 亚洲三级av| 一区二区在线 | 91久久精品国产91久久 | 国产一区二区在线免费视频 | 国产欧美在线 |