c++中的结构体

news2025/1/19 22:01:23

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

  • 语法:struct 结构体名 {结构体成员列表};
  • 通过结构体创建变量的三种方式:
  • 1、struct 结构体名 变量名
  • 2、struct 结构体名 变量名={成员1值,成员2值…}
  • 3、定义结构体时顺便创建变量
#include<iostream>
#include<string>
using namespace std;
//自定义数据类型,一些类型集合组成的一个类型
struct student
{
	string name;//字符串型
	int age;
	int score;
};

int main()
{
	//方法一:struct 结构体名 变量名
	struct student s1;
	s1.name = "张三";
	s1.age = 18;
	s1.score = 100;
	cout << "s1.name = " << s1.name << "   s1.age = " << s1.age << "   s1.score = " << s1.score << endl;

	//方法二:struct 结构体名 变量名={成员1值,成员2值......}
	struct student s2 = { "李四",17,99 };
	cout << "s2.name = " << s2.name << "   s2.age = " << s2.age << "   s2.score = " << s2.score << endl;

	//方法三:定义结构体时顺便创建变量:通常不使用

	system("pause");
	return 0;
}

在这里插入图片描述

结构体数组

  • 结构体数组:将自定义的结构体放入数组中方便维护
  • 语法:struct 结构体名 数组名[元素个数] = {{} , {} , … ,{}}
#include<iostream>
#include<string>
using namespace std;

//自定义数据类型,一些类型集合组成的一个类型
struct student
{
	string name;//字符串型
	int age;
	int score;
};

int main()
{
	//结构体数组
	struct student arr[3] =
	{
		{"张三",18,99},
		{"李四",17,100},
		{"王五",16,119}
	};
	arr[2].score = 19;
	for (int i = 0; i < 3; i++)
	{
		cout << "第" << i + 1 << "个同学的信息为:" << endl;
		cout << "姓名:" << arr[i].name << endl << "年龄:" << arr[i].age << endl << "成绩:" << arr[i].score << endl << endl;
	}

	system("pause");
	return 0;
}

在这里插入图片描述

结构体指针

  • 通过指针访问结构体中的成员
  • 利用操作符->可以通过结构体指针访问结构体属性
#include<iostream>
#include<string>
using namespace std;
struct student
{
	string name;//字符串型
	int age;
	int score;
};

int main()
{
	//结构体数组
	struct student arr[3] =
	{
		{"张三",18,99},
		{"李四",17,100},
		{"王五",16,119}
	};
	arr[2].score = 19;
	//通过指针指向结构体变量
	student* p = &arr[2];
	//通过指针访问结构体变量中的数据
	cout << "姓名:" << p->name << endl << "年龄:" << p->age << endl << "成绩:" << p->score << endl << endl;

	system("pause");
	return 0;
}

在这里插入图片描述

结构体嵌套结构体

  • 在结构体中可以定义另一个结构体作为成员,用来解决实际问题
  • 每个老师辅导一个学员,一个老师的结构体中,记录一个学生的结构体
#include<iostream>
#include<string>
using namespace std;

struct student//学生结构体
{
	string name;
	int age;
	int score;

};

struct teacher//教师结构体
{
	int id;//职工编号
	string name;
	int age;
	struct student stu;//老师辅导的学生
};


int main()
{
	teacher one;
	one.id = 1;
	one.age = 25;
	one.name = "刘大锤";
	one.stu.age = 18;
	one.stu.name = "张三";
	one.stu.score = 100;
	cout << "老师的编号:" << one.id << endl
		<< "老师的名字:" << one.name << endl
		<< "老师的年龄:" << one.age << endl
		<< "老师辅导的学生:" << one.stu.name << endl
		<< "学生年龄:" << one.stu.age << endl
		<< "学生的成绩" << one.stu.score << endl << endl;

	system("pause");
	return 0;
}

在这里插入图片描述

结构体做函数参数

  • 将结构体作为参数向函数中传递
  • 传递方式有两种
  • 1、值传递
  • 2、地址传递
    将学生传入到一个参数中,打印学生的所有信息
#include<iostream>
#include<string>
using namespace std;
/*结构体做函数参数
* 将结构体作为参数像函数中传递
* 传递方式有两种
* 1、值传递
* 2、地址传递
*/

//将学生传入到一个参数中,打印学生的所有信息

struct student//学生结构体
{
	string name;
	int age;
	int score;
};
//值传递
void print1(struct student s)
{
	cout << "值传递打印学生信息:" << endl;
	cout << "学生姓名:" << s.name << endl << "学生年龄" << s.age << endl << "学生成绩" << s.score << endl << endl;
}
//地址传递
void print2(struct student * p)
{
	cout << endl << "地址传递打印学生信息:"<<endl;
	cout << "学生姓名:" << p->name << endl << "学生年龄" << p->age << endl << "学生成绩" << p->score << endl << endl;
}

int main()
{
	struct student s;
	s.name = "张三";
	s.age = 18;
	s.score = 112;
	print1(s);
	print2(&s);
	

	system("pause");
	return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一个Shader程序

shader 很复杂&#xff0c;我学习的过程中也确实感受到了&#xff0c;需要会数学、图形学、编程语法等等知识。不如让我们直接看看 Shader 到底是什么&#xff1f;直接应用起来。或许没有那么复杂。 1、在场景中新建一个正方体&#xff0c;如下图 2、在 project 面板下新建一…

超级棒,使用 LIME 和 SHAP 可轻松解释机器学习模型的预测

在本文中&#xff0c;我将介绍两个可以帮助了解模型的决策过程的模型 LIME 和 SHAP。 作为数据科学家或机器学习从业者&#xff0c;将可解释性集成到机器学习模型中可以帮助决策者和其他利益相关者有更多的可见性并可以让他们理解模型输出决策的解释。 文章目录技术提升模型SH…

day02 redis

day02 Redis 第一章 Redis持久化机制 Redis的高性能是由于其将所有数据都存储在了内存中&#xff0c;为了使Redis在重启之后仍能保证数据不丢失&#xff0c;需要将数据从内存中同步到硬盘(文件)中&#xff0c;这一过程就是持久化。Redis 提供了一系列不同的持久化选项&#x…

MyBatis框架入门(含实例)

目录 1.MyBatis简介 2.ORM框架 3.数据持久化 4.Mybatis入门实战案例 4.1 下载mybatis的jar包 4.2 将jar包导入工程中 4.3 配置Mybatis的核心配置文件 4.3.1 MyBatis核心文件模板(mybatis-config) 4.3.2 mybatis-config模板的设置 4.4 创建User 实体类 4.5定义DAO层M…

11.25学到的东西==命令行

创建文件&#xff0c;可以直接选择文件之后再加上.py import argparse# 单个参数 # 创建解析器 # ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。 parser argparse.ArgumentParser() # 单独的参数 square 之后这个help就是提示的信息 # 显示给定数字…

【药材识别】基于matlab GUI SVM色差色温判断药材炮制程度系统【含Matlab源码 2241期】

⛄一、SVM色差色温判断药材炮制程度系统简介 本课题来源于"十二五"国家科技支撑计划项目(2012BAI29B11).颜色是中药质量标准中性状评价极为重要的内容,但传统的中药颜色检测大多依靠人的感官评估,人对颜色的辨别是一个非常复杂的过程,受到光学,视觉生理,视觉心理等诸…

JDBC操作数据库实现增、删、查、改

0.JDBC概念 实际开发中,手动的输入SQL语句是少之又少,大多数情况下是通过编译代码进行来控制自动执行. 具体操作如下: 上述展示有一个【自己写的Mysql客户端】&#xff0c;这种操作是非常容易的&#xff0c;因为各种数据库本身就提供一系列的API&#xff0c;可以让用户很方便…

wordpress 安装主题显示要配置FTP的解决办法

目录 问题复现 1、在安装插件的时候会弹出一个窗口 2、输入相关信息后显示失败 问题解决方法 1、查看wordpress文件权限 2、修改wordpress文件权限 3、插件安装完后&#xff0c;将权限改回 场景&#xff1a;基于Linux 的 wordpress 安装主题显示要配置FTP 安装插件或者主…

RegExp 对象

文章目录RegExp 对象创建RegExp对象正则表达式语法RegExp 对象方法支持正则表达式的 String 对象的方法RegExp.prototype[search]()replace() 方法match()常用正则表达式RegExp 对象 RegExp对象表示正则表达式&#xff0c;是由普通字符和特殊字符(也叫元字符或限定符)组成的文…

基于节点分层的配网潮流前推回代方法matlab程序(IEEE33节点潮流计算)

基于节点分层的配网潮流前推回代方法matlab程序&#xff08;IEEE33节点潮流计算&#xff09; 摘要&#xff1a;结合配电网特有的辐射状特点&#xff0c;提出了一种新的基于节点分层的配网潮流前推回代方法。该方法利用配网支路及其节点参数所形成的节点-节点关联矩阵推导出节点…

MiniAlphaGo黑白棋 蒙特卡洛搜索

做个笔记。 一、蒙特卡洛在黑白棋的应用 输入&#xff1a;棋盘&#x1d44f;&#x1d45c;&#x1d44e;&#x1d45f;&#x1d451;、当前执子方&#x1d450;&#x1d45c;&#x1d459;&#x1d45c;&#x1d45f;、搜索时间&#x1d461;&#x1d456;&#x1d45a;&#x…

小米平板5ProWIFI(elish)刷ArrowOS

文章目录警告下载奇兔刷机系统本体及Recovery清除数据刷入AospRec开始刷入警告完成设置输入法变砖头了qwq又是警告芝士截图Root方法结尾警告 此文章只针对 小米平板5Pro Wifi版本&#xff08;elish&#xff09; 由于条件限制&#xff0c;本文大部分无配图 请务必仔细认真阅读此…

Airflow用于ETL的四种基本运行模式, 2022-11-20

(2022.11.20 Sun) 基本运行模式(pattern)是data pipeline使用Airflow的DAG的不同结构&#xff0c;基本模式有如下四种 &#xff1a; 序列Sequence平行拆分Parallel split同步Synchronisation单选Exclusive choice 序列模式 序列模式即若干task按先后顺序依次执行&#xff0c;…

中远通在创业板IPO过会:前三季度收入11亿元,罗厚斌为董事长

近日&#xff0c;深圳证券交易所创业板披露的新显示&#xff0c;深圳市核达中远通电源技术股份有限公司&#xff08;下称“中远通”&#xff09;获得上市委会议通过。据贝多财经了解&#xff0c;中远通于2021年6月30日在创业板递交申请。 本次冲刺创业板上市&#xff0c;中远通…

以go rabbitmq为例子--用最少的时间最好的掌握消息队列

为什么要使用消息队列&#xff1f; 流量削峰 举个例子&#xff0c;如果订单系统最多能处理一万次订单&#xff0c;这个处理能力应付正常时段的下单时绰绰有余&#xff0c;正常时段我们下单一秒后就能返回结果。但是在高峰期&#xff0c;如果有两万次下单操作系统是处理不了的…

向QTableView单元格插入窗体小部件的功能实现

1.前言 我们知道&#xff1a;QTableWidget类有如下函数&#xff1a; void QTableWidget::setCellWidget(int row, int column, QWidget *widget) 可以实现在指定的单元格插入窗体部件QWidget对象&#xff0c;如下代码&#xff1a; setCellWidget(row, column, new QLineEdi…

2023年天津财经大学珠江学院专升本管理学原理专业考试大纲

天津财经大学珠江学院2023年高职升本科专业课考试《管理学原理》考试大纲一、本大纲系天津财经大学珠江学院2023年高职升本科《管理学原理》课程考试大纲。所列考试范围出自徐碧琳主编的教材《管理学原理&#xff08;第二版&#xff09;》&#xff0c;机械工业出版社&#xff0…

刨根问底 Kafka,面试过程真好使

大家好&#xff0c;这里是 菜农曰&#xff0c;欢迎来到我的频道。 充满寒气的互联网如何在面试中脱颖而出&#xff0c;平时积累很重要&#xff0c;八股文更不能少&#xff01;下面带来的这篇 Kafka 问答希望能够在你的 offer 上增添一把&#x1f525;。 Kafka最初是由Linkedin公…

【掌握K8S集群部署】手把手真正实现Kubernetes集群的配置与部署(附问题解决方法)

1、环境准备 IPHOSTNAME10.10.20.15k8s110.10.20.16k8s210.10.20.17k8s3 注意hostname不要用下划线、小数点与字母。 2、环境配置&#xff08;所有节点&#xff09; # stop firewalld systemctl stop firewalld systemctl disable firewalld# disable selinux sed -i s/enfo…

读 RocketMQ 源码,学习并发编程三大神器

笔者是 RocketMQ 的忠实粉丝&#xff0c;在阅读源码的过程中&#xff0c;学习到了很多编程技巧。 这篇文章&#xff0c;笔者结合 RocketMQ 源码&#xff0c;分享并发编程三大神器的相关知识点。 1 CountDownLatch 实现网络同步请求 CountDownLatch 是一个同步工具类&#xff…