# C++ 结构

> 原文： [https://www.programiz.com/cpp-programming/structure](https://www.programiz.com/cpp-programming/structure)

#### 在本文中，您将学习 C++ 编程中的结构。 它是什么，如何定义它并在程序中使用它。

结构是一个单一名称下不同数据类型的变量的集合。 它与[类](/cpp-programming/object-class "C++ class")相似，两者都保存不同数据类型的数据集合。

**例如**：您想存储有关某个人的一些信息：他/她的姓名，公民编号和薪水。 您可以轻松创建不同的变量`name`，`citNo`，`salary`，以分别存储这些信息。

但是，将来，您将需要存储有关多人的信息。 现在，您需要为每个人的每个信息创建不同的变量：`name1`，`citNo1`，`salary1`，`name2`，`citNo2`，`salary2`

您可以轻松地看到代码看起来有多大和混乱。 另外，由于变量之间不存在任何关系（信息），因此这将是一项艰巨的任务。

更好的方法是使用单个名称`Person`收集所有相关信息，并将其用于每个人。 现在，代码看起来也更加简洁，易读且高效。

以单个名称`Person`收集的所有相关信息是一个结构。

* * *

## 如何在 C++ 编程中声明结构？

`struct`关键字定义结构类型，后跟标识符（结构名称）。

然后，在花括号内，可以声明该结构的一个或多个成员（在花括号内声明变量）。 例如：

```cpp
struct Person
{
    char name[50];
    int age;
    float salary;
};
```

在此，定义具有三个成员的结构`人`：`名称`，`age`和`薪水`。

创建结构时，不会分配内存。

结构定义只是创建变量的蓝图。 您可以将其想象为数据类型。 当您如下定义整数时：

```cpp
int foo;
```

`int`指定变量`foo`仅可容纳整数元素。 同样，结构定义仅指定结构变量在定义时所具有的属性。

**注意**：请记住以分号（`;`）结尾的声明

* * *

## 如何定义结构变量？

声明结构`的人`如上所述。 您可以将结构变量定义为：

```cpp
Person bill;
```

在此，定义类型为结构`Person`的结构变量`bill`。

定义结构变量后，仅编译器会分配所需的内存。

考虑到您使用的是 32 位还是 64 位系统，`float`的内存为 4 字节，`int`的内存为 4 字节，`char`的内存为 1 字节。

因此，为结构变量`bill`分配了 58 个字节的内存。

* * *

## 如何访问结构的成员？

使用**点（`.`）**运算符可以访问结构变量的成员。

假设您要访问结构变量`bill`的`age`，并将其分配为 50。 您可以使用以下代码执行此任务：

```cpp
bill.age = 50;
```

* * *

## 示例：C++ 结构

C++ 程序，用于将数据分配给结构变量的成员并显示它。

```cpp
#include <iostream>
using namespace std;

struct Person
{
    char name[50];
    int age;
    float salary;
};

int main()
{
    Person p1;

    cout << "Enter Full name: ";
    cin.get(p1.name, 50);
    cout << "Enter age: ";
    cin >> p1.age;
    cout << "Enter salary: ";
    cin >> p1.salary;

    cout << "\nDisplaying Information." << endl;
    cout << "Name: " << p1.name << endl;
    cout <<"Age: " << p1.age << endl;
    cout << "Salary: " << p1.salary;

    return 0;
} 
```

**输出**

```cpp
Enter Full name: Magdalena Dankova
Enter age: 27
Enter salary: 1024.4

Displaying Information.
Name: Magdalena Dankova
Age: 27
Salary: 1024.4
```

在此，声明具有三个成员`name`，`age`和`salary`的结构`Person`。

在`main()`[函数](/cpp-programming/function "C++ functions")的内部，定义了结构变量`p1`。 然后，要求用户输入信息，并显示用户输入的数据。

* * *

您还应该查看与这些结构相关的教程：

*   [如何将结构传递给函数？](/cpp-programming/structure-function "C++ pass structures to function")
*   [如何在结构中使用指针？](/cpp-programming/structure-pointer "C++ pointers to structures")