跳到主要内容

C++ 结构体

提示
  1. 结构体定义:C++中的结构体是不同数据类型变量的集合,类似于类。可以使用struct关键字来定义结构体,如struct Person { char name[50]; int age; float salary; };
  2. 声明结构体变量:定义结构体后,可以声明结构体类型的变量,如Person bill;。声明结构体变量时,编译器为其分配内存。
  3. 访问结构体成员:结构体成员可以通过点(.)操作符访问和修改,例如bill.age = 50;用于访问和设置结构体变量billage成员。

结构体是不同数据类型的变量的集合,名称相同。它类似于 ,因为它们都包含不同数据类型的数据集合。

**例如:**您想存储一个人的一些信息:他/她的姓名、公民身份号码和薪水。您可以很容易地创建不同的变量 name、citNo、salary 来分别存储这些信息。

然而,将来您可能想存储多个人的信息。现在,您需要为每个人的每个信息创建不同的变量:name1、citNo1、salary1、name2、citNo2、salary2

您可以很容易地想象代码会变得多大和凌乱。此外,由于这些变量(信息)之间不存在关系,这将是一项艰巨的任务。

更好的方法是将所有相关信息收集在一个名为 Person 的单一名称下,并为每个人使用它。现在,代码看起来更加整洁、可读且高效。

这个名为 Person 的所有相关信息的集合就是结构体。

如何在 C++ 编程中声明结构体?

struct 关键字定义了一个结构体类型,后跟一个标识符(结构体的名称)。

然后在大括号内,您可以声明该结构体的一个或多个成员(在大括号内声明变量)。例如:

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

这里定义了一个名为 person 的结构体,它有三个成员:name、age 和 salary。

声明结构体时,并不会分配内存。

结构体定义只是创建变量的蓝图。您可以将其想象为一种数据类型。当您像下面这样定义一个整数时:

int foo;

int 指定变量 foo 只能容纳整数元素。类似地,结构体定义只指定当定义结构体变量时它具有什么属性。

注意: 记得用分号 (;) 结束声明

如何定义结构体变量?

一旦您声明了一个名为 person 的结构体,您可以这样定义一个结构体变量:

Person bill;

这里,定义了一个名为 bill 的结构体变量,它是结构体 Person 的类型。

当定义结构体变量时,编译器才分配所需的内存。

假设您使用的是 32 位或 64 位系统,float 的内存为 4 字节,int 的内存为 4 字节,char 的内存为 1 字节。

因此,为结构体变量 bill 分配了 58 字节的内存。

如何访问结构体的成员?

结构体变量的成员可以使用点 (.) 运算符访问。

假设,您想访问结构体变量 bill 的年龄并将其分配给 50。您可以使用以下代码执行此任务:

bill.age = 50;

示例:C++ 结构体

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

#include <iostream>
using namespace std;

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

int main()
{
Person p1;

cout << "输入全名:";
cin.get(p1.name, 50);
cout << "输入年龄:";
cin >> p1.age;
cout << "输入薪水:";
cin >> p1.salary;

cout << "\n显示信息。" << endl;
cout << "姓名:" << p1.name << endl;
cout <<"年龄:" << p1.age << endl;
cout << "薪水:" << p1.salary;

return 0;
}

输出

输入全名:Magdalena Dankova
输入年龄:27
输入薪水:1024.4

显示信息。
姓名:Magdalena Dankova
年龄:27
薪水:1024.4

这里声明了一个名为 Person 的结构体,它有三个成员 name、age 和 salary。

main() 函数 内,定义了一个名为 p1 的结构体变量。然后,用户被要求输入信息,并显示用户输入的数据。

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