C++实现动态结构体数组
时间: 2025-07-06 17:48:42 浏览: 12
### C++ 动态分配结构体数组
在 C++ 中,动态分配结构体数组能够灵活应对不同场景下的需求。通过 `new` 运算符可以创建指定数量的结构体对象,并将其存储在一个连续内存区域中。
当需要动态分配一个结构体数组时,语法如下所示:
```cpp
struct Person {
char name[20];
int age;
};
// 动态分配五个Person类型的结构体空间
Person* people = new Person[5];
```
上述代码片段展示了如何利用 `new` 关键字为特定长度的结构体数组分配堆上的内存[^1]。值得注意的是,在这种情况下,应当确保后续能正确释放这些资源以免造成内存泄漏。
为了初始化已分配的空间并对其进行操作,下面提供了一个完整的例子来说明这一过程:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
struct Person {
char name[20];
int age;
};
// 定义变量n表示所需人数
int n;
cout << "请输入要录入的人数:";
cin >> n;
// 使用new关键字申请相应大小的结构体数组
Person *people = new Person[n];
// 输入每个人的信息
for (int i = 0; i < n; ++i) {
cout << "\n输入第" << i + 1 << "个人的名字和年龄:" << endl;
cin.ignore();
cin.getline(people[i].name, sizeof(people[i].name));
cin >> people[i].age;
}
// 输出所有人信息
cout << "\n以下是所有人的信息:" << endl;
for (int j = 0; j < n; ++j){
cout << "姓名:" << people[j].name << ", 年龄:" << people[j].age << endl;
}
// 记得删除之前开辟出来的动态内存
delete[] people;
return 0;
}
```
这段程序首先询问用户想要记录多少条个人信息,接着根据用户的输入动态地创建适当规模的 `Person` 结构体数组;随后收集每一条记录的数据直至完成整个列表的构建工作;最后遍历打印出所有的人员详情,并安全回收所使用的额外空间[^2]。
阅读全文
相关推荐


















