为什么为数组结构赋值不工作C.

时间:2016-06-04 19:20:39

标签: c arrays struct malloc

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

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'
谁能告诉我我做错了什么? 为什么抱怨学生转学?他们不是同一类型吗?

1 个答案:

答案 0 :(得分:5)

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

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

所以你的功能应该是

void getStdData(Student *students)

有关情况的良好讨论,请考虑this answer