[Error] incompatible types in assignment of 'Student*' to 'Student [5]'
时间: 2024-01-23 09:02:20 浏览: 120
Student achievement and differential reinforcement of incompatible behavior: Hand raising
这个错误是因为不能将一个指向结构体的指针直接赋值给结构体数组。在这种情况下,您需要使用`memcpy`函数将新内存块的数据复制到原始内存块中。下面是修改后的代码:
```c
void add_student(struct Student *new_student) {
int size = sizeof(students) / sizeof(students[0]);
struct Student *temp = (struct Student *)realloc(students, (size + 1) * sizeof(struct Student));
if (temp != NULL) {
students = temp;
memcpy(&students[size], new_student, sizeof(struct Student));
printf("添加成功!\n");
} else {
printf("添加失败!\n");
}
}
```
在这个函数中,我们使用`memcpy`函数将新学生的信息复制到新的空间中,并输出添加成功的提示信息;否则输出添加失败的提示信息。`memcpy`函数与`strcpy`函数类似,但是可以复制任意类型的数据。注意,我们使用`&`操作符获取结构体数组中新增的最后一个元素的地址,以便进行内存复制。
阅读全文