C++ 结构体 struct

结构体

1.定义结构体
2.定义结构体同时初始化结构体变量
3.定义无名称的结构体同时定义无名称的结构体变量;

结构体变量的定义

1.使用struct关键字声明结构体变量;
2.也可以不使用关键字直接声明结构体变量

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. // 结构的使用
  5. struct person{
  6. string name;
  7. int age;
  8. };
  9. // 定义结构体时创建结构体变量以及赋值
  10. struct student{
  11. string name;
  12. } ky = {"ky"};
  13. // 定义没有名称的结构体同时定义变量
  14. struct {
  15. string name;
  16. } brid;
  17. // 定义结构体变量时可以省略结构体关键字struct
  18. struct person p = {"str", 18};
  19. person person1;
  20. int main() {
  21. cout << p.name << endl;
  22. cout << ky.name << endl;
  23. return 0;
  24. }

结构体中的位字段

C++也允许指定占用特定位数的结构成员,这使得创建与某个硬件设备上的寄存器对应的数据结构非常方便。字段的类型应为整型或枚举,接下来是冒号,冒号后面是一个数字,它指定了使用的位数。可以使用没有名称的字段来提供间距。每个成员都被称为位字段(bit field),位字段通常用在低级编程中。

  1. // 结构体中的位字段
  2. // C++也允许指定占用特定位数的结构成员,这使得创建与某个硬件设备上的寄存器对应的数据结构非常方便。
  3. // 字段的类型应为整型或枚举,接下来是冒号,冒号后面是一个数字,它指定了使用的位数。可以使用没有名称的字段来提供间距
  4. // 每个成员都被称为位字段(bit field)
  5. // 位字段通常用在低级编程中
  6. struct torgle_register{
  7. unsigned int SN : 4;
  8. unsigned int : 4;
  9. bool goodIn: 1;
  10. bool goodTorgle: 1;
  11. };

共用体 union 的定义

  1. // 共用体union
  2. // 共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。
  3. // 结构体可以同时存储int、long和double
  4. // 共用体只能存储int、long或double,条件是在不同的时间进行
  5. // 用于共用体每次只能存储一个值,因此它必须有足够的空间来存储最大的成员,所以,共用体的长度为其最大成员的长度
  6. // 共用体的用途:当数据项使用两种或更多格式(但不会同时使用)时,可节省空间。
  7. // 例如,假设管理一个小商品目录,其中有一些商品的ID为整数,而另一些ID为字符串,这种情况下可以使用共用体
  8. union one4all{
  9. int int_val;
  10. int long long_val;
  11. double double_val;
  12. };

匿名共用体anonymous union

  1. // 匿名共用体anonymous union没有名称
  2. // 其成员位于相同地址处的变量。每次只有一个成员是当前的成员
  3. struct widget{
  4. char brand[20];
  5. int type;
  6. union {
  7. long id_num;
  8. char id_char[20];
  9. };
  10. };

枚举类型enum

枚举类型的定义及使用

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. // 枚举类型
  5. // 枚举量:默认情况下会将整数值赋值给枚举量,第一个枚举量为0,第二个枚举量为1···,通过指定的整数值覆盖默认值
  6. enum spectrum{
  7. red, orange, yellow, green, blue, violet, indigo, ultraviolet
  8. };
  9. spectrum band;
  10. int color = 3 + band;
  11. int main() {
  12. cout << color << endl;
  13. return 0;
  14. }

设置枚举变量的值

  1. // 设置枚举变量的值
  2. // 可以使用赋值操作来显式地设置枚举量的值
  3. enum bits{
  4. one = 1,
  5. two = 2,
  6. four = 4,
  7. eight = 8
  8. };
  9. // 指定的值必须是整数,也可以只显式地定义其中一些枚举量的值
  10. // 这里first在默认情况下为0,后面没有被初始化的枚举变量的值将比其前面的枚举量大1,因此third的值为101
  11. enum bigstep{
  12. first, second = 100, third
  13. };
  14. // 创建多个值相同的枚举量
  15. // 其中zero和null都为0,one_c和umero_uno都为1
  16. enum {
  17. zero, null = 0, one_c, numero_nuo = 1
  18. };