9.4.1 什么是链表
它是动态地进行存储分配的一种结构。
链表中各元素在内存中的地址是不连续的。要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一个元素。
如果不提供“头指针”,则整个链表无法访问。
9.4.2 建立简单的静态链表
head=&a; //将结点a的起始地址赋给头指针head
a.next=&b; //将结点b的起始地址赋给a结点的next成员
b.next=&c; //将结点c的起始地址赋给a结点的next成员
c.next=NULL; //c结点的next成员不存放其他结点地址
p=head; //使p指向a结点
9.4.3 建立动态链表
所谓建立动态链表是指在程序执行过程中从无到有建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。
9.5 共用体类型
9.5.1 什么是共用体类型
有时想用同一段内存单元存放不同类型的变量。
定义共用体类型变量的一般形式为:
union 共用体名
{成员表列}变量表列;
例如:
union //没有定义共用体类型名
{
int i;
char ch;
float f;
}a,b,c;
9.5.2 引用共用体变量的方式
只有先定义了共用体变量才能引用它,但是不能引用共用体变量,而只能引用共用体变量中的成员。
不能只引用共用体变量,例如下面这样是错误的:
printf("%d",a);
应该写成:
printf("%d",a.i);
9.5.3 共用体类型数据的特点
在使用共用体类型数据时要注意以下一些特点:
(1)同一内存段可以用来存放几种不同类型的成员,但在每一瞬间只能存放其中一个成员,而不是同时存放几个。
(2)可以对共用体变量初始化,但初始化表中只能有一个常量。
(3)共用体变量中起作用的成员是最后一次被赋值的成员,原有变量存储单元中的值就被取代。
(4)共用体变量的地址和它的各成员的地址都是同一地址。
(5)不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。
(6)C99允许用共用体变量作为函数参数。
(7)共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。