vs没报错,也没警告,运行时出错了,

#include
#include

struct Student
{
int age;
float score;
char name[100];
};

//输入函数
void InputStudent(struct Student * len, struct Student * i)
{
int p = 0;
i = 0;
printf("请输入第%d个学生的信息:\n", i+1);
printf("age = ");
scanf_s("%d", &p[i].age);

printf("name = ");
scanf_s("%s",p[i].name);

printf("score = ");
scanf_s("%f", &p[i].score);

}

//输出函数
void OutputStudent(struct Student * len, struct Student * i)
{
int p = 0;
i = 0;
printf("第%d个学生的信息是:\n", i + 1);
printf("age = %d\n",p[i].age);
printf("name = %s\n", p[i].name);
printf("score = %f\n", p[i].score);

printf("\n");

}

int main(void)
{
int len;
struct Student * p;
int i;

printf("请输入学生的个数:\n");
printf("len = ");
scanf_s("%d", &len);

p = (struct Student *)malloc(len * sizeof(struct Student ));

//输入
for (i=0; i<len; ++i)
{
    struct Student len, i;

    InputStudent(&len, &i);
}

//输出
for (i=0; i<len; ++i)
{
    struct Student len, i;

    OutputStudent(&len, &i);
}

return 0;

}

其实是编译出现了一个错误,, 图片说明

//输入
for (i=0; i<len; ++i)
{
    struct Student len, i;

    InputStudent(&len, &i);
}

你这个i怎么现在上面定义了Int i .然后又struct Student len, i;