C++ 结构体:struct 的定义与结构体数组
在 C++ 编程中,结构体(struct)是一种基础且重要的数据聚合类型,它允许开发者将不同类型的数据(如 int、char、指针等)封装在一起,形成一个自定义的数据类型,解决了单一数据类型无法描述复杂对象的问题。结合内存管理与指针知识,结构体及其数组的使用本质是对内存中复杂数据的组织与访问——结构体变量可存储于栈区、堆区,结构体数组则是连续内存中多个结构体对象的集合。
一、结构体的核心认知:为什么需要 struct?
在实际开发中,我们经常需要描述由多个不同类型数据组成的复杂对象。例如,描述一个学生需要包含姓名(字符串)、年龄(整数)、成绩(浮点数);描述一个商品需要包含编号(整数)、名称(字符串)、价格(浮点数)。
若仅使用普通变量,需为每个属性定义独立变量,不仅代码冗余、可读性差,还难以批量管理同类对象。而结构体通过封装多个属性,将复杂对象抽象为一个自定义类型,既简化了代码组织,又便于批量处理数据,是面向对象编程思想的基础铺垫(结构体可看作类的简化版本)。
关键关联:结构体变量的存储遵循内存四区模型——局部结构体变量存于栈区,动态分配的结构体变量(new struct)存于堆区,全局/静态结构体变量存于全局/静态区,这与内存管理知识点完全契合。
二、结构体的定义与基本使用
C++ 中结构体的定义需使用 struct 关键字,语法灵活,可根据需求选择不同的定义方式,核心包括'结构体定义''变量声明''初始化''成员访问'四个环节。
1. 结构体的定义语法
结构体定义的核心是指定'结构体名称'和'成员列表',成员列表可包含任意 C++ 数据类型(基本类型、指针、其他结构体等),语法格式如下:
#include <iostream>
#include <string>
using namespace std;
// 格式 1:仅定义结构体类型,后续声明变量
struct 结构体名称 {
数据类型 成员 1;
数据类型 成员 2;
// ... 更多成员
};
// 格式 2:定义结构体类型的同时声明变量
struct 结构体名称 {
数据类型 成员 1;
数据类型 成员 2;
} 变量名 1, 变量名 2; // 多个变量用逗号分隔
// 格式 3:匿名结构体(无名称),仅能声明一次变量
struct {
数据类型 成员 1;
数据类型 成员 2;
} 变量名; // 仅当前变量可用,无法复用类型
2. 结构体变量的声明与初始化
结构体类型定义后,可像普通数据类型一样声明变量,并通过多种方式初始化成员变量,常用方式包括'顺序初始化''指定成员初始化''默认初始化'。
#include <iostream>
std;
{
string name;
age;
score;
};
{
Student s1 = {, , };
Student s2 = {.age = , .name = , .score = };
Student s3;
sname = ;
sage = ;
sscore = ;
;
}

