Linux C++ 008-结构体
本节关键字:Linux、C++、结构体
相关库函数:
基本概念
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
定义和使用
语法:struct 结构体名 {结构体成员列表};
通过结构体创建变量的方式有三种
-
struct 结构体名 变量名
-
struct 结构体名 变量名 = {成员1值, 成员2值…}
-
定义结构体时顺便创建变量
struct Student
{
string name;
} stu3;
结构体数组
作用:将自定义的结构体放入到数组中,方便维护
语法:struct 结构体名 数组名[ 元素个数 ] = { {}, {}, {}, … {} };
结构体嵌套
作用:结构体中的成员可以是另一个结构体
struct student
{
string name;
int age;
int score;
};
struct teacher
{
int id;
string name;
struct student stu;
};
结构体做函数参数
作用:将结构体作为参数向函数中传递
值传递:void printStudent(struct student stu);
地址传递:void printStudent(struct student* pstu);
结构体中const的使用
作用:使用const防止误操作
void printStudent(const struct student* pstu);
结构体案例
案例描述:
- 设计一个英雄的结构体,包括成员姓名、年龄、性别
- 创建结构体数组,数组中存放5名英雄
- 通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果
{ “刘备”, 23, “男” },{ “关羽”, 22, “男” },{ “张飞”, 20, “男” },{ “赵云”, 21, “男” },{ “貂蝉”, 19, “女” }
#include <iostream>
struct HeroInfo
{
char name[128];
int age;
char sex[3];
};
void swap(struct HeroInfo *hero1, struct HeroInfo *hero2)
{
struct HeroInfo tmp;
memcpy(&tmp, hero1, sizeof(struct HeroInfo));
memcpy(hero1, hero2, sizeof(struct HeroInfo));
memcpy(hero2, &tmp, sizeof(struct HeroInfo));
}
void bubbleSort(struct HeroInfo *heros, int count)
{
int i, j, exchange;
for (i=0; i<count; i++)
{
exchange = 0;
for (j=1; j<count-i; j++)
{
if (heros[j-1].age > heros[j].age)
{
exchange = 1;
swap(&heros[j-1], &heros[j]);
}
if (exchange == 0)
break;
}
}
}
void printHerosInfo(struct HeroInfo *heros, int count)
{
for (int i=0; i<count; i++)
{
printf("%s\t%d\t%s\n", heros[i].name, heros[i].age, heros[i].sex);
}
}
int main(int argc, char *argv[])
{
struct HeroInfo hero_arr[5] = {
{"刘备", 23, "男"},
{"关羽", 22, "男"},
{"张飞", 20, "男"},
{"赵云", 18, "男"},
{"貂蝉", 19, "女"},
};
bubbleSort(hero_arr, 5);
printHerosInfo(hero_arr, 5);
}
/* 运行结果:
赵云 18 男
貂蝉 19 女
张飞 20 男
关羽 22 男
刘备 23 男
*/
标签:struct,int,void,HeroInfo,C++,heros,Linux,008,结构
From: https://blog.csdn.net/qq_45157350/article/details/135867262