重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Option
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的黑山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
Explicit
'定义
结构体
,注意,此处如果用到字符串变量,要设置
定长
Private
Type
typUser
uid
As
Long
uName
As
String
*
10
'定长10个字符
uPWD
As
String
*
10
End
Type
Dim
user(10)
As
typUser
'读取
Dim
userGet(10)
As
typUser
Private
Sub
Form_Load()
'随便填充数据
Dim
i
As
Integer
For
i
=
To
10
With
user(i)
.uid
=
i
.uName
=
Rnd
*
99999
.uPWD
=
Rnd
*
88888
End
With
Next
'保存结构体数组到文件
Open
App.Path
"\save.dat"
For
Random
As
#1
Len
=
Len(user(0))
'Random方式打开文件,这里的len是每条记录的长度
For
i
=
To
10
Put
#1,
,
user(i)
Next
Close
#1
'从文件中读取结构体
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可以不用写初始化,本身构造中就有
}
};
struct T_FatherStruct
{
int nFatherData;
string strFatherData;
T_ChildStruct arrChild[10];
T_FatherStruct()
{
nFatherData = 0;
strFatherData = "";
}
};
“结构”是 Visual Basic 早期版本支持的用户定义类型 (UDT) 的一般化。除字段外,结构还可以公开属性、方法和事件。结构可以实现一个或多个接口,而您可以分别为每个字段声明访问级别。
可以合并不同类型的数据项来创建结构。结构将一个或多个“元素”彼此关联并且将它们与结构本身关联。声明了结构后,它将成为“复合数据类型”,而您可以声明该类型的变量。
想让单个变量持有几个相关信息时结构很有用。例如,您可能想将一个雇员的姓名、电话分机号和薪金放在一起。可以对这些信息使用几个变量,或者可以定义一个结构并将它用于单个雇员变量。当有许多雇员并且因此有该变量的许多实例时,结构的优点变得非常明显。
使用 Structure 语句语句作为结构声明的开始,并使用 EndStructure 语句作为结构声明的结束。在这两条语句之间必须至少声明一个“元素”。元素可以是任何数据类型,但是至少一个必须是非共享变量,或是非共享非自定义事件。
不能在结构声明中初始化任何结构元素。如果将一个变量声明为结构类型,则可以通过变量访问元素来给它们赋值。
声明一个结构:
可以使用 Public、Protected、Friend或Private关键字指定结构的访问级别,或者使用默认值 Public。如:
Private Structure employee
End Structure
向结构体添加元素:
结构必须具有至少一个元素。必须声明结构的每个元素并指定其访问级别。如果使用不含任何关键字的 Dim 语句 (Visual Basic),则可访问性默认值为 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
---------------------------
另外,关于你的问题,请参考下面C++/C对自定义类型的比较:
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中定义结构体
窗体中可以定义,只能定义成 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
结构体定义以后就成为一种数据类型,和 Long等数据类型使用方法类似
Private Sub Form_Load()
Dim x As MyType
Dim y As MyType
x.a = 1
x.b = 2
y = x 'VB 允许 结构体 像这样整体赋值
ReDim MyArray(1 To 10) As MyType
End Sub