Option
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的黑山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
Explicit
'定義
結(jié)構(gòu)體
,注意,此處如果用到字符串變量,要設(shè)置
定長(zhǎng)
Private
Type
typUser
uid
As
Long
uName
As
String
*
10
'定長(zhǎng)10個(gè)字符
uPWD
As
String
*
10
End
Type
Dim
user(10)
As
typUser
'讀取
Dim
userGet(10)
As
typUser
Private
Sub
Form_Load()
'隨便填充數(shù)據(jù)
Dim
i
As
Integer
For
i
=
To
10
With
user(i)
.uid
=
i
.uName
=
Rnd
*
99999
.uPWD
=
Rnd
*
88888
End
With
Next
'保存結(jié)構(gòu)體數(shù)組到文件
Open
App.Path
"\save.dat"
For
Random
As
#1
Len
=
Len(user(0))
'Random方式打開(kāi)文件,這里的len是每條記錄的長(zhǎng)度
For
i
=
To
10
Put
#1,
,
user(i)
Next
Close
#1
'從文件中讀取結(jié)構(gòu)體
Open
App.Path
"\save.dat"
For
Random
As
#1
Len
=
Len(user(0))
For
i
=
To
10
Get
#1,
i
+
1,
userGet(i)
Next
Close
#1
End
Sub
struct T_ChildStruct
{
int nChildData;
string strChildData;
T_ChildStruct()
{
nChildData = 0;
strChildData = ""; // string可以不用寫(xiě)初始化,本身構(gòu)造中就有
}
};
struct T_FatherStruct
{
int nFatherData;
string strFatherData;
T_ChildStruct arrChild[10];
T_FatherStruct()
{
nFatherData = 0;
strFatherData = "";
}
};
“結(jié)構(gòu)”是 Visual Basic 早期版本支持的用戶定義類型 (UDT) 的一般化。除字段外,結(jié)構(gòu)還可以公開(kāi)屬性、方法和事件。結(jié)構(gòu)可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,而您可以分別為每個(gè)字段聲明訪問(wèn)級(jí)別。
可以合并不同類型的數(shù)據(jù)項(xiàng)來(lái)創(chuàng)建結(jié)構(gòu)。結(jié)構(gòu)將一個(gè)或多個(gè)“元素”彼此關(guān)聯(lián)并且將它們與結(jié)構(gòu)本身關(guān)聯(lián)。聲明了結(jié)構(gòu)后,它將成為“復(fù)合數(shù)據(jù)類型”,而您可以聲明該類型的變量。
想讓單個(gè)變量持有幾個(gè)相關(guān)信息時(shí)結(jié)構(gòu)很有用。例如,您可能想將一個(gè)雇員的姓名、電話分機(jī)號(hào)和薪金放在一起??梢詫?duì)這些信息使用幾個(gè)變量,或者可以定義一個(gè)結(jié)構(gòu)并將它用于單個(gè)雇員變量。當(dāng)有許多雇員并且因此有該變量的許多實(shí)例時(shí),結(jié)構(gòu)的優(yōu)點(diǎn)變得非常明顯。
使用 Structure 語(yǔ)句語(yǔ)句作為結(jié)構(gòu)聲明的開(kāi)始,并使用 EndStructure 語(yǔ)句作為結(jié)構(gòu)聲明的結(jié)束。在這兩條語(yǔ)句之間必須至少聲明一個(gè)“元素”。元素可以是任何數(shù)據(jù)類型,但是至少一個(gè)必須是非共享變量,或是非共享非自定義事件。
不能在結(jié)構(gòu)聲明中初始化任何結(jié)構(gòu)元素。如果將一個(gè)變量聲明為結(jié)構(gòu)類型,則可以通過(guò)變量訪問(wèn)元素來(lái)給它們賦值。
聲明一個(gè)結(jié)構(gòu):
可以使用 Public、Protected、Friend或Private關(guān)鍵字指定結(jié)構(gòu)的訪問(wèn)級(jí)別,或者使用默認(rèn)值 Public。如:
Private Structure employee
End Structure
向結(jié)構(gòu)體添加元素:
結(jié)構(gòu)必須具有至少一個(gè)元素。必須聲明結(jié)構(gòu)的每個(gè)元素并指定其訪問(wèn)級(jí)別。如果使用不含任何關(guān)鍵字的 Dim 語(yǔ)句 (Visual Basic),則可訪問(wèn)性默認(rèn)值為 Public。如:
Private Structure employee
Public givenName As String
Public familyName As String
Public phoneExtension As Long
Private salary As Decimal
Public Sub giveRaise(raise As Double)
salary *= raise
End Sub
Public Event salaryReviewTime()
End Structure
---------------------------
另外,關(guān)于你的問(wèn)題,請(qǐng)參考下面C++/C對(duì)自定義類型的比較:
1、在C++中,不需使用typedef
struct Structure1 {
char c;
int i;
float f;
double d;
};
int main() {
struct Structure1 s1, s2;
s1.c = 'a'; // Select an element using a '.'
s1.i = 1;
s1.f = 3.14;
s1.d = 0.00093;
s2.c = 'a';
s2.i = 1;
s2.f = 3.14;
s2.d = 0.00093;
}
2、在C中,需用typedef定義
typedef struct {
char c;
int i;
float f;
double d;
} Structure2;
int main() {
Structure2 s1, s2;
s1.c = 'a';
s1.i = 1;
s1.f = 3.14;
s1.d = 0.00093;
s2.c = 'a';
s2.i = 1;
s2.f = 3.14;
s2.d = 0.00093;
}
VB6.0中定義結(jié)構(gòu)體
窗體中可以定義,只能定義成 Private ,在本窗體中使用
Private Type MyType
a As Integer
b As Integer
End Type
模塊中
可以定義成 Private ,在本模塊中使用
Private Type MyType
a As Integer
b As Integer
End Type
可以定義成 Public ,在任何地方都可以使用
Public Type MyType
a As Integer
b As Integer
End Type
結(jié)構(gòu)體定義以后就成為一種數(shù)據(jù)類型,和 Long等數(shù)據(jù)類型使用方法類似
Private Sub Form_Load()
Dim x As MyType
Dim y As MyType
x.a = 1
x.b = 2
y = x 'VB 允許 結(jié)構(gòu)體 像這樣整體賦值
ReDim MyArray(1 To 10) As MyType
End Sub