1、共同体
什么是共同体:在C语方中,不同数据类型的数据可以使用共同的存储区域,这种数据类型称为共同体。 结构体中的成员在内存中是平铺的,每个成员都有自己的独立的内存空间,共同体中的成员则 是共用一块内存的,其占用内存的大小是共同体中所占空间最大的成员的类型长度。 一般形式如下:union 共同体名{ 成员列表; }例如:union person{ int age; int sex; char name;}这里定义了一个共同体类型有 unino person 字是由三个成员组成,三个成员在内存中使用共同的存储空间。由于共同体中各成员的数据长度往往不同,所以共同体变量在存储时总是按其中成员中数据长度最大的成员占用内存空间。#include #include union person{ int age; char name[10];};int main(){ union person p; printf("%ld %ld",sizeof(char),sizeof(int)); printf("%ld ",sizeof(union person)); p.age =10; strcpy(p.name,"copy"); printf("%#x %s",p.age,p.name); printf("%p %p ",&p.age,&p.name); return 0;}1 412 0x79706f63 copy0x7ffdeefe6b6c 0x7ffdeefe6b6c
2、typedef
在C语言中经常在定义结构体类型时使用typedef,例如typedef struct _node_{ int age; char name[10]; struct _node_ *next;} listnode, *linklist;这里定义了两个新的数据类型 listnode 和linklist.其中listnode等价于数据类型 struct _node_ 而linklist等价于 struct _node_ *#include #include typedef struct person{ int age; char name[10];}listperson, *linklist ;int main(){ listperson p1; linklist p; p =&p1; p->age =10; strcpy(p->name,"copy"); printf("%d %s ",p->age,p->name); return 0;}