上一讲学习了一些基本的数据类型像数组,结构。我们还学习了一些指针的基本概念。这一讲,我们主要学习两种数据类型,一种叫联合,也叫共同体。还有一种就是链表。
一.联合(共同体)
共同体同结构体在声明形式和访问方式上有些类似,但是它和结构体是完全不一样的。所谓共同体类型,是指将不同的数据项组成一个整体,它们在内存中占用同一段存储单元。其关键字为union(联合的意思)。
定义形式为:
union 共同体名
{
类型名 成员名1;
类型名 成员名2;
......
类型名 成员名n;
};
由于共同体中各个成员变量在内存中使用同一段存储空间,因此共同体变量的长度等于最长的成员的长度。共同体的访问方式同结构体类似。
下面是一个共同体的例子:
union key
{
int k;
char ch[2];
}u;
该共同体变量占用的空间是int类型占用的空间与2字节的最大值,即4个字节。
#include<stdio.h>
int main()
{
union key
{
int k;
char ch[2];
}u;
u.k = 257;
printf("%d %d\n",u.ch[0], u.ch[1]);
return 0;
}
运行此代码后,你会发现u.ch[0]和u.ch[1]的值会随着u.k的值的改变而发生改变。由此也可以说明它们占用同一内存空间。
二.链表