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>

typedef int age;
typedef char *name;

struct studentInfo
{
    age *studentAges;
    name *studentNames;
    int size;
};
typedef struct studentInfo StudentInfo;

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

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;

    StudentInfo stu;
    stu.studentNames = studentNames;
    stu.studentAges = studentAges;
    stu.size = size;

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


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

    return 0;

}

void incrementAges(StudentInfo si)
{
    for(int i = 0; i < si.size; i++)
        si.studentAges[i] += 1;

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

}

为啥又要问一遍呀