结构体数组

/*
 结构体数组
 每个元素都是一个结构体
 */

#include <iostream>
#include <string>
using namespace std;

// 定义Student结构体
struct Student{
    string name; //成员
    int age;
    int num;
    char level;
};

void print(Student s[],int n){
    for(int i=0;i<n;i++){
        cout<<s[i].name<<" "<<s[i].age<<" "<<s[i].num<<" "<<s[i].level<<endl;
    }
    cout<<endl;
}

int main() {
    // 一、先定义后赋值
    Student a[3]; //定义后逐个赋值
    // 对a[0]元素进行赋值,因为a[0]是一个结构体,可以通过.获取其成员
    a[0].name = "张三";
    a[0].age = 16;
    a[0].num = 1;
    a[0].level = 'A';
    
    // 直接对a[1]赋值一个结构体
    a[1] = {"李四",17,2,'C'};
    
    cout<<a[1].name<<endl; //输出
    
    // 二、定义时赋值
    // 形式一:对每个元素赋值一个结构体,与二维数组类似
    Student b[3] = {{"张三",16,1,'A'},{"李四",17,2,'B'},{"王五",16,3,'C'}};
    print(b, 3);
    /*
     输出:
     张三 16 1 A
     李四 17 2 B
     王五 16 3 C
     */
    
    // 形式二:也可以扁平化赋值,里面的{}去掉
    Student b2[3] = {"张三",16,1,'A',"李四",17,2,'B',"王五",16,3,'C'};
    print(b2, 3);
    /*
     输出:
     张三 16 1 A
     李四 17 2 B
     王五 16 3 C
     */
    
    // 形式三:如果长度不够,其他值默认为0
    Student b3[3] = {"张三",16,1,'A'};
    print(b3, 3);
    /*
     输出:
     张三 16 1 A
      0 0 
      0 0
     */
    
    return 0;
}