C++ 结构体 (struct)

C++ 结构体

C++ 结构体是一种将多个相关的变量组合在一起的方式。结构体中的每个变量都被称为结构体的成员

数组不同,结构体可以包含许多不同的数据类型(如 intstringbool 等)。

创建结构体

要创建一个结构体,请使用 struct 关键字并在花括号内声明其每个成员。

声明后,指定结构体的变量名(在下面的实例中为 myStructure):

struct {             // 结构体声明  
  int myNum;         // 成员(int 变量)  
  string myString;   // 成员(string 变量)  
} myStructure;       // 结构体变量

访问结构成员

要访问结构体的成员,请使用点语法 (.):

实例

将数据分配给结构体的成员并打印它:

// 创建一个名为 myStructure 的结构体变量
struct {
  int myNum;
  string myString;
} myStructure;

// 为 myStructure 的成员赋值
myStructure.myNum = 1;
myStructure.myString = "Hello World!";

// 打印 myStructure 的成员
cout << myStructure.myNum << "\n";
cout << myStructure.myString << "\n";

亲自试一试

多个变量中的一个结构体

您可以使用逗号 (,) 在多个变量中使用一个结构体:

struct {
  int myNum;
  string myString;
} myStruct1, myStruct2, myStruct3; // 使用逗号分隔的多个结构体变量

此例演示如何在两个不同的变量中使用一个结构体:

实例

使用一个结构体来表示两辆车:

struct {  
  string brand;  
  string model;  
  int year;  
} myCar1, myCar2; // 我们可以在这里使用逗号来添加变量  
  
// 将数据放入第一个结构体  
myCar1.brand = "BMW";  
myCar1.model = "X5";  
myCar1.year = 1999;  
  
// 将数据放入第二个结构体  
myCar2.brand = "Ford";  
myCar2.model = "Mustang";  
myCar2.year = 1969;  
  
// 打印结构体的成员  
cout << myCar1.brand << " " << myCar1.model << " " << myCar1.year << "\n";  
cout << myCar2.brand << " " << myCar2.model << " " << myCar2.year << "\n";

亲自试一试

命名结构体

通过给结构体命名,您可以将其视为一种数据类型。这意味着您可以在程序的任何位置、任何时间使用此结构体创建变量。

要创建命名结构体,将结构体的名称放在 struct 关键字之后:

struct myDataType { // 这个结构体被命名为 "myDataType"
  int myNum;
  string myString;
};

要声明使用该结构体的变量,请使用结构体的名称作为变量的数据类型:

myDataType myVar;

实例

使用一个结构体来表示两辆车:

// 声明一个名为 "car" 的结构体  
struct car {  
  string brand;  
  string model;  
  int year;  
};  
  
int main() {  
  // 创建一个 car 结构体并将其存储在 myCar1 中;  
  car myCar1;  
  myCar1.brand = "BMW";  
  myCar1.model = "X5";  
  myCar1.year = 1999;  
  
  // 创建另一个 car 结构体并将其存储在 myCar2 中;  
  car myCar2;  
  myCar2.brand = "Ford";  
  myCar2.model = "Mustang";  
  myCar2.year = 1969;  
   
  // 打印结构体的成员  
  cout << myCar1.brand << " " << myCar1.model << " " << myCar1.year << "\n";  
  cout << myCar2.brand << " " << myCar2.model << " " << myCar2.year << "\n";  
   
  return 0;  
}

亲自试一试