结构体的用法

结构体的两个案例

  • 案例 1 学生老师系统
//
// Created by xm on 21-5-9.
//

//
// Created by xm on 21-5-9.
//

#include <iostream>

#include <string>

using namespace std;



// 结构体的案例

// 老师带了五个学生,打印五个学生的信息




// 学生的结构体
struct Student{
    // 姓名
    std::string sName;
    // 分数
    int score;
};


// 老师的结构体
struct Teacher{

    // 姓名
    std::string tName;
    Student StuArray[5];


};


// 给老师和学生赋值的函数


void allocateSpace(Teacher tArray[], int len)
{
    std::string nameSeed = "ABCDE";
    for (int i=0;i<len;i++)
    {
        tArray[i].tName = "Teacher_";
        tArray[i].tName += nameSeed[i];

        // 通过循环给老师的五个学生赋值
        for (int j=0;j<5;j++)
        {
            tArray[i].StuArray[j].sName = "Student_";
            tArray[i].StuArray[j].sName += nameSeed[j];

            tArray[i].StuArray[j].score = rand() & 60 + 40;
        }
    }
}


// 打印所有信息

void printInfo(Teacher tArray[], int len)
{
    for (int i=0;i<len;i++)
    {
        std::cout << "Teacher name: " << tArray[i].tName << std::endl;

        for (int j=0;j<5;j++)
        {
            std::cout << "Student name: " << tArray[i].StuArray[j].sName
            << " score : "  << tArray[i].StuArray[j].score << std::endl;
        }
    }
}


int main()
{
    // 创建 3 名老师的数组

    Teacher tArray[3];



    // 通过函数给3 名老师的信息赋值, 并给老师带的学生信息赋值

    int len = sizeof( tArray) / sizeof(tArray[0]);
    allocateSpace(tArray, len);

    // 打印所有老师所带所有的学生

    printInfo(tArray, len);


    return 0;
}


  • 游戏人物新创建

//
// Created by xm on 21-5-9.
//

#include <iostream>

#include <string>

using namespace std;

// 英雄结构体
struct Hero
{
    // 姓名
    std::string name;
    // 年龄
    int age;
    // 姓别
    std::string sex;

};

// 冒泡排序实现


void bubbleSort(Hero heroArray[], int len)
{
    for (int i=0;i<len-1;i++)
    {
        for (int j=0;j<len-i-1;j++)
        {
            // 如果 j 下标元素年龄大于 j+1 下标的元素的年龄, 交换两个元素

            if (heroArray[j].age > heroArray[j+1].age)
            {
                Hero temp = heroArray[j];
                heroArray[j] = heroArray[j+1];
                heroArray[j+1] = temp;
            }
        }
    }
}


void printHero(Hero heroArray[], int len)
{
    for (int i=0;i<len;i++)
    {
        std::cout << "name: " << heroArray[i].name
                  << " age: " << heroArray[i].age
                  << " sex: " << heroArray[i].sex
                  << std::endl;
    }
}

int main()
{
    // 创建数组存放 5 名英雄
    Hero heroArray[5] =
            {
                    {"刘备", 23, "男"},
                    {"关羽", 22, "男"},
                    {"张飞", 21, "男"},
                    {"赵云", 20, "男"},
                    {"貂蝉", 19, "女"},
            };

    int len = sizeof(heroArray) / sizeof(heroArray[0]);
    for (int i=0;i<len;i++)
    {
        std::cout << "name: " << heroArray[i].name
                  << " age: " << heroArray[i].age
                  << " sex: "<< heroArray[i].sex
                  << std::endl;

    }

    // 对数组进行排序,按照年龄进行升序排序

    bubbleSort(heroArray, len);

    // 将排序后结果打印输出

    printHero(heroArray, len);

    return 0;

  • 值传递和值引用
void printfMessage1(Student stu)
{
    std::cout << stu.age << std::endl;
}


void printfMessage2(Student *p_stu)
{
    p_stu->age = 1002;
    std::cout << p_stu->age << std::endl;
}

void printMessage3(const Student *s)
{
    //s->age = 300; const 关键字,常量不允许修改
    std::cout << s->age << std::endl;
}


int main()
{

    Student s = {"学长", 100, 100};
    printfMessage1(s);

    printfMessage2(&s);

    Student st2 = {"zha", 200, 200};

    printMessage3(st2);

    return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值