談VB自定義型別引數的傳遞

2021-06-07 14:46:50 字數 1312 閱讀 2106

2009-10-16 13:08 佚名 weaseek 

字型大小:t

|  t

這裡介紹vb自定義型別引數的傳遞,使用者自定義型別在vb中是一種重要的資料型別,它為程式設計者提供了很大的靈活性,使開發人員可以根據需要構造自己的資料結構。

ad:

本文向大家介紹vb自定義型別引數的傳遞,可能好多人還不了解vb自定義型別引數,沒有關係,看完本文你肯定有不少收穫,希望本文能教會你更多東西。

vb自定義型別引數的傳遞

使用者自定義型別在vb中是一種重要的資料型別,它為程式設計者提供了很大的靈活性,使開發人員可以根據需要構造自己的資料結構。它相當於c/c++中的結構型別(structure)。在vb中,允許程式設計師以傳址的方式將自定義資料型別引數傳入動態庫,dll過程也可以將修改後的引數返回vb程式。但是,在vb中仍然不支援以傳值的方式傳遞vb自定義型別引數。

傳遞vb自定義型別引數時,必須確保vb中的資料型別的成員與動態庫中的結構成員是一一對應的,所佔空間也必須嚴格一致。這裡所說的一一對應,不僅是指vb 中的所有結構成員在動態庫的結構中都必須有對應的元素,而且它們在資料結構中定義的順序也必須嚴格一致,這是vb中使用的"資料結構成員對齊方式"決定的。在vb 中,資料結構使用雙字對齊方式(4-byte alignment),因此,在使用者自己生成用於vb呼叫的動態連線庫時,也必須把編譯選項"structure member alignment" 設為4位元組(如前文所述)。

所謂結構成員對齊方式是指乙個資料結構內部,其成員的排列方式。譬如,在vb中,其對齊方式是4位元組,這就好象在乙個資料結構內部分成了很多個4位元組大小的小單元,如果相鄰兩個或多個資料成員的大小可以放在乙個單元中,那麼就放在一起;否則這些小單元中可能 會出現未用的空位元組。我們來看下面乙個資料型別:

type testtype  

m1 as integer  

m2 as byte  

m3 as long  

end type 

它的三個成員的大小加起來是2+1+4=7。但是,由於m1和m2的位元組總長度是3,小於 4,它 們就存放於乙個單元中;但該單元剩下的乙個位元組不足以放下乙個long型的成員m3,於是m3 就被放在下乙個單元中,它們之間就有了乙個未用的空位元組;因此,整個結構所佔實際長度是8 位元組。同理,如果將m3和m2的位置交換一下,它所佔的尺寸就變成了9位元組。可見,成員在結構 中的宣告順序也是非常重要的。

另外,在vb 中還可以把乙個函式的指標傳遞到動態庫中,方法也並不複雜。但筆者強烈建議最好不要這麼做,因為這樣一來vb 應用程式就幾乎完全喪失了它所應有的安全性。如果 確實需要傳遞函式指標的話,那麼還是編乙個c/c++ 的程式來完成這項工作吧。以上介紹vb自定義型別引數的傳遞。

AIDL傳遞自定義型別實現

1 自定義型別實現 parcelable介面 如下 package com.xindun.xdemm.bean import android.os.parcel import android.os.parcelable public class userinfo implements parcela...

C語言 自定義函式 傳遞引數

c語言中自定義函式時,值傳遞是單向的,由實參傳遞給形參 無論對形參做什麼運算,都不會改變實參的值 但是,若想要利用自定義函式來改變實參的值,可以利用指標傳遞 舉個栗子 includevoid exch int main void exch int excha,int exchb 可以看到,這裡定義的...

自定義引數 Python自定義函式引數

1.種類 1 位置引數 x就是位置引數 usr bin env python coding utf 8 def power x result x x print result 2 預設引數n就是預設引數 usr bin env python coding utf 8 def power x,n 1 ...