为什么将值分配给数组结构不起作用 C



我正在尝试编写一个收集学生信息的程序。我正在使用一组学生(结构)

typedef struct {
  char name[50];
  struct Course* course;
}Student;

在我的主要()中,我做到了

Student* stds = (Student*) malloc(app.std_cnt * sizeof(*stds) );
getStdData(stds);

这是getStdData函数

void getStdData(struct Student *students){
 int i;
 char name[50];
 Student std;
 printf("n");
 for(i = 0; i < app.std_cnt; i++){
    printf("std [%i] name : ",i+1);

    scanf("%s",&name);
    strcpy(std.name,name);
    students[i] = std;
 }
}

当我编译时,我得到

Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.
gpa.c
gpa.c(124): error C2440: '=': cannot convert from 'Student' to 'Student'

谁能告诉我我做错了什么?为什么要计划学生到学生的转换?它们不是同一类型吗?

在 C 中,struct StudentStudent 可能是两种不同的类型。 Student来自你的typedef,struct Student来自

struct Student { /* ... */ };

所以你的函数应该是

void getStdData(Student *students)

为了很好地讨论这种情况,请考虑这个答案。

相关内容

  • 没有找到相关文章

最新更新