共用体的概念:
在c语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用。共用体 在定义,说明和使用形式上与结构体相似。两都本质上的不同仅在于使用内存的方式上。
一般形式为:
union 共用体名
{
成员表列;
};
与结构体的区别为,结构体采用内存对齐 的方式,每个成员单独存放;
共用体: 占用同一块空间;
例子:
union str n; n.a=0x12345678; printf("%#x\n",n.a); printf("%ld\n",sizeof(n.a)); printf("%ld\n",sizeof(n.b)); n.b='9'; printf("%#x\n",n.b);
结构体内定义指针:
union str{ int a ; char b; struct { int c; float d; }stu; };
访问方式: printf("%#x",n.stu.d);
typedef:类型重定义
在C语言中,允许使用关键字typedef定义新的数据类型
形式为:typedef <已有数据类型> <新数据类型>;
例如:typedef int integer;(此时定义的integer等价于int );
使用方式:
1、使用时定义
typedef struct student str; str str2; str2.id=1; strcpy(str2.sec,"男"); strcpy(str2.name,"阿Q"); strcpy(str2.address,"浙江绍兴"); printf("%d,%s,%s,%s",str2.id,str2.sec,str2.name,str2.address);
2、定义结构体时定义
typedef struct student{ int id; char sec[3]; char name[5]; char address[20]; }stu2,*stu3;//