malloc显示红线

时间:2014-11-27 12:44:03

标签: c visual-studio-2012

我正在使用Visual Studio 2012并使用C进行编程。我看到没有编译或运行时错误(我可以显示输入和输出)但是出现红线,当我将鼠标悬停在红线上时它会显示错误: 错误类型为void *的值不能用于初始化“Student *”类型的实体

这是我的代码:

    typedef struct{
            char* firstName;
            char* lastName;
            int day;
            int month;
            int year;

        }STUDENT;

        int numStudents=3;
        int x;
    // Here it show red line, when I hover on it, it show me message
    // 
        STUDENT* students = malloc(numStudents * sizeof *students); // Here it show red line
        for (x = 0; x < numStudents; x++){
            students[x].firstName=(char*)malloc(sizeof(char*));
            scanf("%s",students[x].firstName);
            students[x].lastName=(char*)malloc(sizeof(char*));
            scanf("%s",students[x].lastName);
            scanf("%d",&students[x].day);
            scanf("%d",&students[x].month);
            scanf("%d",&students[x].year);
        }
for (x = 0; x < numStudents; x++)
        printf("first name: %s, surname: %s, day: %d, month: %d, year: %d\n",students[x].firstName,students[x].lastName,students[x].day,students[x].month,students[x].year);

请让我知道为什么会这样,如果有错误那么它就不应该编译或运行!!!

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您可能正在编译为C ++,并且在其中必须强制转换无效指针,而在C中则不是。

告诉Visual Studio编译为C,或者转换malloc的结果。