C++ 不知道结构体数组的元素个数,结构体数据分配内存的多种方法
时间: 2023-11-28 17:47:54 浏览: 56
如果你不知道结构体数组的元素个数,可以使用以下方法来分配内存:
1. 动态分配内存:使用 `new` 操作符动态分配内存,然后使用指针访问结构体数组的元素。例如:
```c++
struct Student {
int id;
char name[20];
};
int main() {
int n = 10; // 假设有10个学生
Student* students = new Student[n]; // 动态分配内存
// 访问结构体数组的元素
for (int i = 0; i < n; i++) {
students[i].id = i;
strcpy(students[i].name, "student");
}
// 释放内存
delete[] students;
return 0;
}
```
2. 使用 `sizeof` 运算符计算结构体数组的大小,然后除以单个结构体的大小,就可以得到结构体数组的元素个数。例如:
```c++
struct Student {
int id;
char name[20];
};
int main() {
Student students[10]; // 定义有10个学生的结构体数组
int n = sizeof(students) / sizeof(Student); // 计算结构体数组的元素个数
// 访问结构体数组的元素
for (int i = 0; i < n; i++) {
students[i].id = i;
strcpy(students[i].name, "student");
}
return 0;
}
```
3. 使用 C++11 中的范围 for 循环来遍历结构体数组,例如:
```c++
struct Student {
int id;
char name[20];
};
int main() {
Student students[10]; // 定义有10个学生的结构体数组
// 使用范围 for 循环遍历结构体数组
for (auto& student : students) {
student.id = 0;
strcpy(student.name, "student");
}
return 0;
}
```
以上是三种分配结构体数组内存的方法,你可以根据实际情况选择适合自己的方法。