C语言提问 Structs for Students 球忙帮

请问这个应该怎么改?需要修改编写下面的那个代码以包含struct 和 typedef 定义。然后修改函数原型以使用此结构数据类型:void incrementAges(StudentInfo si); void printStudents(StudentInfo si)。第一张是原文,第二张是机翻,希望可以帮我编程1下。蟹蟹。
img

img

#include <stdio.h>
#include <stdlib.h>

typedef int age;
typedef char *name;

void incrementAges(age *studentAges, int size);
void printStudents(name *studentNames, age *studentAges, int size);

int main(int argc, char* argv[]) {
    int size = 6;
    name *studentNames = (name*)malloc(sizeof(name) * size);
    age *studentAges = (age*)malloc(sizeof(age) * size);

    studentNames[0] = "Frank";
    studentNames[1] = "Moni";
    studentNames[2] = "Jimmy";
    studentNames[3] = "Chen";
    studentNames[4] = "Navim";
    studentNames[5] = "Faraq";

    studentAges[0] = 18;
    studentAges[1] = 19;
    studentAges[2] = 20;
    studentAges[3] = 19;
    studentAges[4] = 18;
    studentAges[5] = 19;

    // Increment their ages because we want to increase their age
    incrementAges(studentAges, size);
    printStudents(studentNames, studentAges, size);

    free(studentNames);
    free(studentAges);
    studentNames = NULL;
    studentAges = NULL;

    return 0;
}

void incrementAges(age *studentAges, int size) {
    int i = 0;
    while (i < size) {
        studentAges[i] = studentAges[i] + 1;
        i++;
    }
}

void printStudents(name *studentNames, age *studentAges, int size) {
    int i = 0;
    while (i < size) {
        printf("Student %s is of age %d\n", studentNames[i], studentAges[i]);
        i++;
    }
}

#include <stdio.h>
#include <stdlib.h>
struct student {
char *studentNames;
int size;
int *studentAges;
};
typedef struct student StudentInfo;
void incrementAges(StudentInfo *si);
void printStudents(StudentInfo *si);
void addStudentInfo(StudentInfo &si,char *name,int age);
int main(int argc, char* argv[]) {
    StudentInfo info[6];
    addStudentInfo(info[0],"Frank",18);
    addStudentInfo(info[1],"Moni",19);
    addStudentInfo(info[2],"Jimmy",20);
    addStudentInfo(info[3],"Chen",19);
    addStudentInfo(info[4],"Navim",18);
    addStudentInfo(info[5],"Faraq",19);
    // Increment their ages because we want to increase their age
     incrementAges(info);
      printStudents(info);
    for(i=0;i<6;i++)
    {
      free(info[i].studentNames);
      free(info[i].studentAges);
    }
    return 0;
}
void incrementAges(StudentInfo *si) {
    for(int i=0;i<6;i++)
    si->studentAges++;
}
void printStudents(StudentInfo *si) {
    for(int i=0;i<6;i++)
    {
        printf("Student %s is of age %d\n", si->studentNames,si->studentAges);
    }
}
 
void addStudentInfo(StudentInfo &si,char *name,int age)
{
  si.studentAges = (int*)malloc(sizeof(int));
  *si.studentAges = age;
  si.size = 0;
  for(int i=0;name[i]!=0;i++)
    si.size++;
  si.studentNames = (char*)malloc(sizeof(char)*(si.size+1));
  for(int i=0;name[i]!=0;i++)
    si.studentNames[i] = name[i];
  si.studentNames[i] = 0;
}