结构体、联合体、枚举

发布时间 2023-04-02 23:11:15作者: 踏浪而来的人

结构体:

struct Student

{

  char name[32];

  int age;

  int sex;

  char add[32];

};

上面只是一种数据类型(同int、char基本类型一样),表示是一个结构体,不占用地址空间,只有在定义结构体变量时才分配空间,即struct Student stu1;stu1才占有地址空间。

 

联合体(共用体):有时同一地址空间存放类型不同,不同类型的变量共享一块空间

  结构体的元素有自己单独的空间,而共用体元素共享空间,空间的大小由最大的类型确定

  结构体元素互不影响,共用体赋值会导致覆盖,

union Test

{

  int idata;

  char cdata;

  double ddata; //8字节

}

union Test u1;

u1.idata = 10;

u1.cdata = 20;

printf("idata = %d\n", u1.idata); // 这里的值为20,它把前面的值覆盖了

 

枚举:

枚举也是一种数据类型,也要定义

enum Weekend {sun,mon,tus,wed,thu,fri,sat};