结构体与共用体
概述
通常结构体名第一个字符大写
} ; 分号不能省略
类型名与变量名的关系 :抽象与具体的关系
. :结构体成员运算符
先有类型,再有定义
Student 可省略
使用者只能用全局变量s1,s2
全部初始化:
顺序与声明的类型有关
部分初始化:
中间用 “,” 隔开,其余部分补0
结构体对齐:
浪费字节对齐,提高程序(cpu)执行效率(空间换时间)
规则:
1、结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;
2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数;
3、如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;
4、用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是1、2、4、8、16。
数组按数组装的元素来对齐,并非数组个数
结构体作为函数参数传递使,通常用指针传参
->:指向结构体成员运算符
左边为指针 用指向,为变量,用 .
结构体变量允许整体赋值
结构体不能整体比较,但是成员间可以进行比较
尽量不在头文件里包头文件,降低编译效率
程序 = 数据结构 + 算法
用指针处理链表
链表概述
pHead 头指针保存第一个节点的地址
插入,删除的算法复杂度为1,效率高于数组
节点都是从堆上来的(malloc)
空链表 : 头指针指向NULL
链表节点地址不连续,不能加i访问第i个元素的地址
有头链表和无头链表:
有头链表
首节点从栈区来
头插:
遍历:
---------------------------
嵌入式学习第十六天,今天学习了c语言的最后一章内容,c语言马上就要结束了,后面继续加油