首页 > 系统相关 >Linux C++ 008-结构体

Linux C++ 008-结构体

时间:2024-03-28 13:00:32浏览次数:35  
标签:struct int void HeroInfo C++ heros Linux 008 结构

Linux C++ 008-结构体

本节关键字:Linux、C++、结构体
相关库函数:

基本概念

结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。

定义和使用

语法:struct 结构体名 {结构体成员列表};

通过结构体创建变量的方式有三种

  1. struct 结构体名 变量名

  2. struct 结构体名 变量名 = {成员1值, 成员2值…}

  3. 定义结构体时顺便创建变量

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);

结构体案例

案例描述:

  1. 设计一个英雄的结构体,包括成员姓名、年龄、性别
  2. 创建结构体数组,数组中存放5名英雄
  3. 通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果
    { “刘备”, 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

相关文章

  • C++ Primer Plus 代码学习解析(第三章 3.8-3.11)
    3.8floatnum.cpp#include<iostream>intmain(){usingnamespacestd;cout.setf(ios_base::fixed,ios_base::floatfield);floattub=10.0/3.0;doublemint=10.0/3.0;constfloatmillion=1.0e6;cout<<&......
  • Linux——磁盘与文件系统管理
    目录磁盘分区的表示硬盘分区分区类型确认系统中的磁盘设备——fdisk规划硬盘中的分区——fdisk文件系统 文件系统类型:在分区中创建文件系统——mkfs,mkswap挂载文件系统mount命令umount命令查看分区挂载情况设置启动载入(永久挂载文件系统)建立一个新文件系统步骤......
  • C++之STL整理(2)之vector超详用法整理
    C++之STL整理(2)之vector用法(创建、赋值、方法)整理注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的vector用法整理C++之STL整理(2)之vector用法(创建、赋值、方法)整理一、vector的初始化1、默认构造函数2、拷贝构造函数copy区间3......
  • 【C++】自增运算符重载及其效率问题
    自增运算符重载总所周知,C++的自增运算符有两种基本使用方法,在这里我们分别称为i++和++i,想必大家在C语言课上已经学了自增运算符和自减运算符,这里就不再赘述,这里主要讲解自增运算符重载,自减运算符完全可以触类旁通。首先了解什么是运算符重载。定义:运算符重载是面向对象编......
  • C++11 新特性:非受限联合体
    在C++11之前,C++的联合体(union)主要被用于内存节省和对不同数据类型的同一片内存区域的访问。然而,传统的联合体存在着严格的限制,它只能包含POD(PlainOldData,简单旧数据类型)类型的成员。也就是说不能在联合体中包含有非平凡(non-trivial)构造函数、复制构造函数、移动构造......
  • Linux常用命令介绍
    Linux常用命令介绍Linux中的命令非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。因为不想在使用时总是东查西找,所以在此总结一下,方便一下以后的查看。下面就说说我最常用的Linux命令。1、cd命令这是一......
  • Linux 命令行终端快捷键汇整
    熟悉键盘操作可以极大地提高操作效率,熟练的Linux用户几乎不需要使用鼠标,仅用键盘就可以更快且更方便地完成所有操作。Linux命令解释器(也可以叫Shell,终端,命令行等)也有很多快捷键,熟练掌握可以极大的提高操作效率。在本文整理一些最常用的快捷键。常用命令行操作快捷键:Ctril......
  • Linux - 批量清除失效软连接
     红底白字,并且一闪一闪的都是失效的软连接,需要批量清除它们...1、打印所有失效软连接find./*-typel-exectest!-e{}\;-exececho{}\; 2、批量清除失效软连接find/path/to/search-typel-exectest!-e{}\;-execrm{}\;    — 要养成终生......
  • Linux - 安装JDK(.tar.gz)
      1、上传jdk-8u351-linux-x64.tar.gz到/opt/module 目录下并解压tar-zxvfjdk-8u351-linux-x64.tar.gz2、配置/etc/profile文件#文件末尾进行配置exportJAVA_HOME=/opt/module/jdk1.8.0_351exportPATH=$PATH:$JAVA_HOME/bin3、使修改生效,并进行验证source/e......
  • Linux:部署达梦数据库DM8(1)
    0.安装DM8数据库安装包产品下载-达梦数据(dameng.com)https://www.dameng.com/list_103.html进入官方网站下载centos7的安装包,本章使用centos7进行部署,提前关闭好防火墙和selinux  建议你的系统运行内存为:2G或以上1.部署基础环境先安装一下桌面环境yum-ygroupinstal......