一、结构的特点
-
<李> 1,用来自定义复杂数据结构李>
<李> 2,结构体里面可以包含多个字段(属性)李>
<李> 3,struct类型可以定义方法,注意和函数的区分李>
<李> 4,struct类型是值类型李>
<李> 5,struct类型可以嵌套李>
<李> 6,语言没有类类型,只有struct类型李>
二、结构的定义
1,结构声明:
<代码>类型标识符结构{ 名称字符串 年龄int 分数int }代码>
2,结构中字段访问:和其他语言一样,使用点
例子
<代码>类型学生结构体{ 名称字符串 年龄int 分数int } 函数main () { var stu学生 斯图。Name="李雷" 斯图。年龄=22 斯图。分数=20 fmt。Printf (" name=% s的年龄=% d分数=% d”, stu.Name, stu.Age, stu.Score) }代码>
3, struct定义的三种形式:
: var stu学生
b: var stu =new学生(学生)
c: var stu =学生及学生{}
(1)其中b和c返回的都是指向结构体的指针,访问形式如下
stu.Name, stu.Age和斯图。分数或者( stu) . name ( stu) .Age (* stu) .Scroe
三、结构的初始化
1,结构体的内存布局:结构体中的所有字段在内存是连续的,布局如下:
类型通过Rect1 struct{最小、最大点}
Rect2 struct类型{最小,最大*点}
2,链表定义h5> <代码>类型学校结构{
学校的名字
下一个*学校
}代码>
每个节点包含下一个节点的地址,这样把所有的节点串起来,通常把链表的第一个节点叫做链表头
3,双链表定义h5> <代码>类型学校结构{
名称字符串
下一个*学校
学校:*
}代码>
如果有两个指针分别指向前一个节点和后一个节点叫做双链表。
4,二叉树定义h5>
类型学校结构{
名称字符串
左右学校
学校
}
如果每个节点有两个指针分别用来指向左子树和右子树,我们把这样的结构叫做二叉树