Linux C++ 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	男
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/495992.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL安装和配置(超详细)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 欢迎&#x1f64f;点赞&#x1f5e3;️评论&#x1f4e5;收藏&#x1f493;关注 &#x1f496;衷心的希…

为什么做秒真问答?秒真问答营销的价值分析

近来&#xff0c;今日头条对部分业务做出调整。一方面是将“头条百科”升级为“抖音百科”&#xff0c;通过“抖音百科”这个新品牌&#xff0c;更好的为今日头条和抖音的内容场景服务。另外一方面则是&#xff0c;推出全新的问答业务“秒真问答”&#xff0c;目前已经在抖音和…

apisix创建https

总结了下apisix 使用https 的问题和方法 1、apisix 默认https 端口是9443 2、apisix 需要上传证书后才可以使用https 否二curl测试会报错 SSL routines:CONNECT_CR_SRVR_HELLO 3、apisix 上传证书方法 我是使用的自签名证书&#xff0c;注意自签名证书的Common Name 要写你…

WPF 多路绑定、值转换器ValueConvert、数据校验

值转换器 valueconvert 使用ValueConverter需要实现IValueConverter接口&#xff0c;其内部有两个方法&#xff0c;Convert和ConvertBack。我们在使用Binding绑定数据的时候&#xff0c;当遇到源属性和目标控件需要的类型不一致的&#xff0c;就可以使用ValueConverter&#xf…

Tickeys for Mac:让每一次敲击都充满乐趣,提升打字体验新高度!

Tickeys for Mac 是一款为 macOS 设计的虚拟键盘音效生成器。它通过模拟机械键盘的声音&#xff0c;为打字和输入操作增添了音效反馈&#xff0c;让用户在使用电脑时感受到更加真实的键盘反馈体验。用户可以根据个人喜好选择不同类型的键盘声音和音效设置&#xff0c;让键盘操作…

嗨购模式:绿色积分引领消费新潮流,实现增值共赢新篇章

随着绿色消费观念深入人心&#xff0c;绿色积分作为新的消费激励方式受到了广大消费者的热烈追捧。在众多消费模式中&#xff0c;嗨购模式凭借其独特的绿色积分融合策略&#xff0c;让消费者在享受绿色消费的同时&#xff0c;也能获得更多实惠与额外收益。 传统的全返机制虽然为…

Docker 部署 Elasticsearch-Filebeat-Kibana

目录 一、简介 1.Elasticsearch: 2.Filebeat: 3.Kibana: 二、工作流程 三、部署 1.创建docker网络 2.启动 elasticsearch 容器 3.创建 kibana 容器 4.客户端安装日志采集器filebeat &#xff08;1&#xff09;docker安装 &#xff08;2&#xff09;rpm安装 四、访…

新品发布|灵雀云重磅推出大模型 LLMOps 平台

自即日起&#xff0c;灵雀云正式推出大模型 LLMOps 平台 Alauda Machine Learning &#xff08;简称 AML&#xff09;&#xff0c;AML在整合传统 MLOps 解决方案的基础之上&#xff0c;为大模型/大语言模型场景提供更强大、更易用的功能。灵雀云意在将AML打造成全面覆盖传统 ML…

《YOLOv9魔术师专栏》专栏介绍 专栏目录

《YOLOv9魔术师专栏》将从以下各个方向进行创新&#xff08;更新日期24.3.28&#xff09;&#xff1a; 【原创自研模块】【多组合点优化】【注意力机制】【卷积魔改】【block&多尺度融合结合】【损失&IOU优化】【上下采样优化 】【SPPELAN & RepNCSPELAN4优化】【…

Linux系统使用Docker部署Portainer结合内网穿透实现远程管理容器和镜像

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PMO活动︱2024第十三届中国PMO大会将于5月在京召开

PMO站在企业高度进行组织级项目管理&#xff0c;工作虽然千头万绪但首当其冲的无疑是在企业中建立统一的、标准化的项目管理方法体系&#xff0c;“无规矩不成方圆”&#xff0c;根据项目管理行业标准结合企业实际情况制定一整套适合本企业的项目管理规范制度&#xff0c;这是P…

如何使用Excel创建一个物品采购表

在企业的日常运营中&#xff0c;物品采购是一个常见且重要的活动。有效的采购管理不仅可以确保企业及时获得所需物资&#xff0c;还可以控制成本、提高效率。Microsoft Excel是一个功能强大的工具&#xff0c;它可以帮助我们创建和管理物品采购表。本文将详细介绍如何使用Excel…

如何制定公平、客观的考核标准,避免主观偏见和人情因素的影响?

在企业管理中&#xff0c;考核标准的制定是确保员工绩效评价公正、客观的关键环节。然而&#xff0c;由于主观偏见和人情因素的影响&#xff0c;很多企业在考核过程中往往难以做到公平、公正。本文将探讨如何制定公平、客观的考核标准&#xff0c;以最大程度地减少主观偏见和人…

【Frida】【Android】04_Objection安装和使用

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

在点集的新知识面前百年集论不堪一击

黄小宁 与x∈R相异&#xff08;等&#xff09;的实数均可表为yxδ&#xff08;增量δ可0也可≠0&#xff09;&#xff0c;因各实数的绝对值都可是表示长度的数故各实数都可是数轴上点的坐标&#xff0c;于是x∈R变换为实数yxδ的几何意义可是&#xff1a;一维空间“管道”g内R…

ICP Hacker House 邀你共赴 IC 生态项目开发新风口

为了更好地探索区块链技术前沿&#xff0c;体验作为全面智能合约云平台的互联网计算机&#xff08;Internet Computer Protocol&#xff09;&#xff0c;将数据、内容、计算和用户体验全部托管于链上&#xff0c;IC 生态致力于推动去中心化互联网的深度发展&#xff0c;并将更安…

为何云安全产品需区分四层与七层协议攻击:深入理解与应对策略

引言 随着云计算技术的发展和广泛应用&#xff0c;云安全产品的精细化与智能化需求日益凸显。其中&#xff0c;针对网络攻击的防御措施往往基于对传输协议层面的理解和处理&#xff0c;特别是四层&#xff08;传输层&#xff09;和七层&#xff08;应用层&#xff09;协议攻击…

1、动态数组

1、动态数组 一、什么是数据结构❓1、线性结构2、树形结构3、图形结构 二、线性表三、数组&#xff08;Array&#xff09;四、动态数组&#xff08;Dynamic Array&#xff09;1、接口设计2、动态数组的设计3、查(1) size、isEmpty(2) indexOf、contains(3) get、checkIndex 4、…

实力上榜 | 创新微MinewSemi再获“物联之星”年度企业投资价值50强

近日&#xff0c;由深圳市物联传媒有限公司、AIoT星图研究院、IOTE组委会、深圳市物联网产业协会主办的“物联之星”2023中国物联网行业年度榜单评选结果正式公布。经过层层筛选&#xff0c;创新微MinewSemi获评2023年度“中国物联网企业投资价值50强”&#xff0c;连续两年实力…

应急响应实战笔记04Windows实战篇(1)

第1篇&#xff1a;FTP暴力破解 0x00 前言 ​ FTP是一个文件传输协议&#xff0c;用户通过FTP可从客户机程序向远程主机上传或下载文件&#xff0c;常用于网站代码维护、日常源码备份等。如果攻击者通过FTP匿名访问或者弱口令获取FTP权限&#xff0c;可直接上传webshell&#…
最新文章