关于表达式必须包含类类型,不允许指针指向不完整的类类型的问题
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct grades {
double math;
};
struct student
{
char* name;
struct gardes* grade;
};
int main()
{
int i;
int n;/*定义学生人数*/
printf("please enter the numbers of students:\n");
scanf("%d", &n);
student* number = (student*)malloc(sizeof(student) * (n + 1));
struct grades g;
for (i = 0; i < n; i++)
{
if (((number + i)->name = (char*)calloc(n + 1, sizeof(char))) != NULL)
printf("please enter the %d students\n", i + 1);
printf("please enter the name:\n");
scanf("%s", (number + i)->name);
printf("please enter the math grades:\n");
scanf("%lf", number->grade.math);
}
printf("the average is %lf\n", number->grade.math);
free(number);
}
struct student
{
char* name;
struct gardes* grade; //第一你单词拼错了,第二我不知道为啥写成struct grades*,
//要么写grades* grade,main函数中中calloc空间,要么就不要用指针,直接写变量 grades grade;
};
改为
struct student
{
char* name;
grades grade;
};
完了之后
scanf("%lf", number->grade.math);
改为
scanf("%lf", &(number->grade.math)); //并且功能上你应该加上i,最终改为scanf("%lf", &((number+i)->grade.math));