结构体:
C语言有三大基本类型:整型,字符型,浮点型
定义结构体:用户“自定义”新的“数据类型”
struct 类型名
{
属性1;
属性2;
...
};
注:定义结构体类型并不是定了变量,而是注册了一个新的数据类型
嵌套结构体:结构体中可以包含结构体
struct 类型名
{
属性1
struct 类型 变量名;
};
定义结构体变量:分配空间
struct 类型 变量名;
定义结构体指针变量:指针变量必须指向一个实体空间地址
struct 类型* 指针变量名;
注:编译器在分配结构体大小空间时,默认大字节对齐(提高访问速度)
例如:
struct student struct student
{ {
char name[10]; char name[10];
char sex; int height;
int height; char sex;
} }
都是按照int分配空间
左边一个结构体占16个字节(4个int)。 右边占20个字节(5个int)。
初始化结构体变量:在定义变量同时赋初值
struct 类型 变量名={属性1,。。。};
同类型实体之间可以互相赋值
struct student s1,s2;
s2=s1
引用结构变量:不能整体引用,只能引用成员属性 (名字,指针)
变量.成员
指针->成员
注: . 优先级高于 *
结构体与数组的关系:
类型 数组名[长度]={};
引用数组内容: 下标法 、指针法
数据结构:数据的一种结构形式
数据结构分为逻辑结构,物理结构
逻辑结构:数据之联系(表现)(学生关系表) ( 脑中想象的情况 )
1、散列:元素之间没有联系
2、线性表:每个元素存在1:1的联系,且每个元素只有一个直接前驱和一直直
接后驱( 头结构没有直接前驱和尾节点没有直接后驱)
3、树形结构:元素存在1:N的联系 (文件系统)
4、图形结构:元素存在N:N的联系(高铁组网)
物理结构:数据在内存的一种表现形式(顺序表,链表) ( 内存中实际的情况)
1、顺序表:所有数所紧挨在一起(数组)
缺点:在删除元素和增加操作麻烦 优点:检索简单(下标法)
2、链表:所有元素没有紧挨在一起,但每个元素有一个联系
优点:在删除元素和增加操作麻烦 缺点:检查麻烦