学习嵌入式第十六天

结构体

前面我们学习了集中基本类型的变量比如整型、字符型,也学习了一种构造类型数据——数组,数组中的各元素是同一个类型的。但是有这些数据类型是不够的,有时还需要将不同的数据类型组合成一个有机整体,以便于引用。

声明一个结构体类似的一般形式为:

struct  结构体名

{

        类型名   成员名;

};

定义结构体类型变量的方法

前面只声明了一个结构体类型,它相当于一个模型,其中并无具体数据,系统也不对其分配内存单元。因此我们在使用结构体类型之前还要定义相应的变量。

定义结构体类型变量的一般形式为:

struct 类型名  变量名1,变量名 2 ;

在定义了结构体变量之后,系统会为他们分配内存单元。注意结构体变量所占的内存并不是几个类型所占内存的和,而是系统遵循了叫做结构体对齐的规则来分配内存单元。

结构体对齐是计算机编程中的一种内存布局优化技术。这种对齐可以使cup更快的进行读写操作,从而提高数据访问的效率。结构体对齐的具体内容如下:

1、结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;
2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数;
3、如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;
4、用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是1、2、4、8、16。

结构体变量的引用

在引用结构体变量时不能将结构体变量作为一个整体进行输入输出,只能对其中的各部分成员分别进行输入输出。引用结构体变量中成员的方式为

结构体变量名成员名

“.”是结构体成员运算符,对结构体变量的成员可以像普通变量一样进行各种运算。也可以对结构体变量成员进行取地址操作。

对结构体变量的初始化一般形式为

结构体变量名  = {,,,“”,}不同的结构体成员用逗号隔开。

结构体数组

定义结构体数组

和定义结构体变量的方法形似,只需说明其为数组即可。

 结构体数组程序举例:

这是按照学生结构体中的学生成绩进行的排序: 

 这是按照学生姓名首字母进行排序:

这是对结构体数组进行遍历:

 

用指针处理链表 

链表是一种常见的重要的数据结构,它是动态地进行存储分配的一种结构。 链表有一个“头指针“变量,一般以head表示,存放一个地址,该地址指向一个元素。链表中的每一个元素称为”节点“,每个节点包含两个部分:用户需要的实际数据和下一个节点的地址。可以看出head指向第一个节点,之后每个节点都会指向下一个节点,直到某个节点指向的地址为空,链表结束。

注意链表中的每个节点都需要存储在堆区中。

下面是一些有关链表的常用函数:

头插是用来在一个链表里加入新节点的函数:

遍历:

 

求有效节点:

 

判空:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值