一、结构体
1. struct (结构体名字(标识符))------- 一般第一个字母大写;
-----------分号不可少;
------------ 结构体成员赋值,“ · ”结构体成员运算符;
-----------结构体成员初始化,只初始化一部分成员(.成员名),其他成员自动为0;
--------- 只能用s1 ,s2
2.结构体对齐(为了提高cpu的执行效率,浪费一部分空间(4的整数倍,32根数据总线4字节))
(1)结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;
(2)结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数;
(3)如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;
(4)用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是 1、2、4、8、16。
二、结构体作为函数参数传递
1.一般使用指针传参(节省空间,提高效率);
2. -> 指向结构体成员运算符(右边为指针时);
3.结构体数组作为参数传递
4.结构体变量可以整体引用;
5.延时函数:sleep
6.输出缓冲区
(1)遇到'\n'输出显示 ;
(2)fflush(stdout)
(3)输出缓冲区满,全部输出显示;
三、单向链表(是一种基础的数据结构,由一系列节点组成,每个节点包含两个部分:数据部分和指向下一个节点的指针。)
1.Node(节点) (1)值域:
(2)指针域:指向下一个值域,最后一个置为NULL;
2.(1)无头链表:是一种链表实现方式,它并不使用一个头节点(或哨兵节点)来标识链表的开始,而是直接使用第一个有效节点作为链表的头部。与用一个额外的头节点的链表不同,无头链表的头开始时是一个空指针,指向链表的第一个节点。
(2)有头链表:是链表的一种实现方式,其中包含一个额外的头节点。头节点通常不存储有效数据,而是用来简化链表的操作(如插入和删除)。
(3)头插