referencia https://www.runoob.com/cprogramming/c-unions.html
enumerar
En el lenguaje C, se trata como int o unsigned Int. De acuerdo con la especificación de C, la enumeración no se puede atravesar.
enum DAY // 先定义枚举类型, 再定义枚举变量
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
enum DAY // 定义枚举类型同时定义枚举变量
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
}day;
enum // 省略枚举名, 直接定义枚举变量
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
}day;
printf("%d",Thu);
estructura
definición
struct Time // 结构体标签
{
uint16 year;
uint08 month;
uint08 day;
uint08 hour;
uint08 minute;
uint08 second;
}TimeStamp; // 结构变量
struct // 声明变量s1, 不标明标签
{
// ...
}s1;
struct SIMPLE // 声明结构体, 有标签, 无变量
{
// ...
};
struct SIMPLE t1, t2[20];
typedef struct
{
// ...
}s2
anidado
struct COMPLEX
{
char string[100];
struct SIMPLE a;
}
struct B; // 相互嵌套需先对其一进行声明
struct A{
struct B *partner;
}
struct B{
struct A *partner;
}
como parámetro
void printBook(struct Books book)
{
printf("%d",book.title);
}
puntero
struct Books *struct_pointer; // 定义指向结构的指针, 同定义其他类型指针
tsruct_pointer = &Book1; // 传入结构体地址
struct_pointer->title // ->访问成员
void printBook(struct Books *book)
{
printf("%d", book->title);
}
printBook(&Book2);
comunidad
Permite almacenar diferentes tipos de datos en la misma ubicación de memoria, solo un miembro puede tener un valor en cualquier momento y la memoria ocupada es el miembro más grande de la unión
union Date
{
int i;
float f;
char str[10];
}data;
union Data data;
data.f = 220.5;