日志19
结构体
一、结构体(struct)
1.定义:结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起。
例如,定义一个表示学生信息的结构体:
struct Student { std::string name; int age; float score; };
2.使用:可以通过以下方式创建结构体变量并访问其成员。
Student stu1; stu1.name = "Alice"; stu1.age = 20; stu1.score = 85.5f;
(1)结构体数组:可以定义结构体数组来存储多个结构体实例。例如,Student classList[3];,可以通过循环来初始化和访问数组中的结构体元素。
(2)结构体指针:可以使用结构体指针来操作结构体。例如,Student* pStu = &stu1;,通过指针访问成员可以使用->运算符,如pStu->age = 21;,这等价于(*pStu).age = 21;。
二、联合体(union)
1. 定义:联合体是一种特殊的自定义数据类型,它的所有成员共享同一块内存空间。例如:
union Data { int i; float f; char str[20]; };
2.使用:当定义一个联合体变量时,在某一时刻,只能存储其中一个成员的值。例如:
Data data; data.i = 10; cout << data.i << endl; data.f = 3.14f; cout << data.f << endl;
3.内存占用:联合体的大小取决于其最大成员的大小。在上面的例子中,Data联合体的大小至少是20字节(因为str成员大小为20字节),这样可以保证能存储任何一个成员的值。
三、枚举(enum)
1.定义:枚举类型用于定义一组命名的常量。
例如,定义一个表示星期几的枚举:
enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY };
2.使用:可以像使用其他数据类型一样使用枚举。例如,Weekday today = MONDAY;,枚举常量默认从0开始依次递增赋值,不过也可以手动指定枚举常量的值,如enum Color { RED = 1, GREEN, BLUE };,这里GREEN的值为2,BLUE的值为3。
3.枚举类型转换:枚举类型可以与整数类型相互转换,但这种转换可能会丢失枚举的语义信息,需要谨慎使用。
例如,int dayValue = (int)MONDAY;将枚举值转换为整数,Weekday anotherDay = (Weekday)2;将整数转换为枚举值。