#include <stdio.h>

// 定义学生结构体
struct Student {
    int id;
    char name[50];
    float score;
};

int main() {
    // 声明并初始化一个包含3个学生的结构体数组
    struct Student students[3] = {
        {1001, "张三", 85.5},
        {1002, "李四", 90.0},
        {1003, "王五", 78.5}
    };
    
    // 声明一个指向Student结构体的指针，并让它指向数组的第一个元素
    struct Student *p = students;  // 等同于 p = &students[0];
    
    // 使用指针遍历结构体数组
    printf("学生信息列表:\n");
    for (int i = 0; i < 3; i++) {
        printf("学号: %d, 姓名: %s, 成绩: %.1f\n", 
               p->id, p->name, p->score);
        p++;  // 指针指向下一个结构体元素
    }
    
    // 另一种遍历方式：通过数组下标和指针结合
    printf("\n另一种遍历方式:\n");
    for (int i = 0; i < 3; i++) {
        printf("学号: %d, 姓名: %s, 成绩: %.1f\n", 
               (students + i)->id, (students + i)->name, (students + i)->score);
    }
    
    return 0;
}