vector 装结构体 c语言,vector容器中存放结构体struct类型变量,怎么样修改结构体成员变量的值...
时间: 2023-11-08 14:29:35 浏览: 37
在 C 语言中,没有 vector 容器这个概念,但可以使用动态数组或指针数组来模拟。假设我们有以下结构体定义:
```
typedef struct {
int id;
char name[20];
} Student;
```
可以使用动态数组来存储结构体类型的变量:
```
Student* students = NULL;
int num_students = 0;
// 添加学生
Student new_student = {1, "Tom"};
students = realloc(students, sizeof(Student) * (num_students + 1));
students[num_students++] = new_student;
// 修改学生姓名
students[0].name = "Jerry"; // 错误,字符串不能直接赋值
// 正确的修改方式
strcpy(students[0].name, "Jerry");
```
在使用动态数组时,需要注意以下几点:
- 需要手动分配内存,可以使用 malloc 或 realloc 函数。
- 存储结构体变量时,需要使用指针类型。
- 不能直接赋值字符串,需要使用 strcpy 函数。
如果使用指针数组来存储结构体类型的变量,则可以直接修改结构体成员变量的值:
```
Student* students[10];
// 添加学生
Student new_student = {1, "Tom"};
students[0] = &new_student;
// 修改学生姓名
students[0]->name = "Jerry"; // 错误,字符串不能直接赋值
// 正确的修改方式
strcpy(students[0]->name, "Jerry");
```
使用指针数组时,需要注意以下几点:
- 存储结构体变量时,需要使用指针类型。
- 如果指针指向的变量是局部变量,则需要注意作用域的问题。