结构体struct:
①结构体定义:struct 标签名 {} ;变量定义;
②结构体赋值: 变量名 = {,,,,} .成员 = 值;
③计算结构体大小要考虑到结构体中包含的所有类型,并且要考虑对齐问题
联合体union:
①计算联合体大小只需要考虑结构体中包含的类型中所占最大空间的那个类型
②一个值被赋值的时候,前面已经赋值的会被覆盖(不显示)/ 可以定义多个类型,但一次只能用一个类型,只能一个有效,其他都无效。
枚举enum:
①enum实际上是一个整形,给一个词,赋值为某个整数。从0开始。
②一般放在switch语句的case中,增加可读性。
struct,union,enum的定义类似
关键字 标签名 变量定义
①关键字typedef: 为基本数据类型定义新的类型名
typedef int ZX --->int型被重新命名为ZX
②宏定义define
定义:#define 名字 值 -->要调用这个值的时候直接调用这个名字
取消定义:#undef 名字
链表和数组
①链表:是一种数据结构,其每一个数据都是一个结构体。他的每一个数据都指向下一个数据的地址。
②数组:数组的地址是连续的,增删不方便,移动一个数据,所有数据都得移动。
链表的操作:
①创建节点:头插、尾插、随机插入,malloc一个空间
随机插入:先让新值指向要插入的位置的下一个值,再令要插入的位置的上一个值指向新值。
头尾插:注意头和尾,尾插让新值的next指向空。
②删除节点:先找到要删除的节点,令其前面的值指向其后面的值,然后再将要删除的值指向NULL,随后free掉。
③循环遍历:运用for循环,for(Class_link tmp_node = head_node->next; tmp_node != NULL; tmp_node = tmp_node->next)
for ( 结构体名 变量承接 = 第一个元素值 ;不为空就没到最后一个;每次指向下一个)