当前位置: 首页 > article >正文

结构体——结构体基本用法,结构体初始化

存储数据时如果需要存储多个数据我们可以使用数组。而如果同时需要存储多种数据可以采用结构体的方式存储。用结构体的方式定义的数据类型是一种构造数据类型抽象数据类型是由各种的基本数据类型组成的。结构体弥补了基本数据类型单一性的缺点。下面的代码展示了声明结构体变量时的一些注意事项结构体基础1. 结构体的基本定义方法struct Student //结构体名首字母大写区分变量 { string name; float score; int age; int level; }; //结构体结束{}外有表示结束定义2. 空结构体struct EmptyStruct //空结构体 { //TODO };3. 匿名结构体struct //匿名结构体不指定结构体名无法使用该结构体定义变量 { string name; float score; int age; int level; }stu1, stu2; //可以在结束前定义变量这样的结构体是一次性的4. 使用typedefC语言常用typedef关键字定义新的类型名这里是Student_C以方便使用。typedef struct // c语言中不能直接使用Student定义变量需要使用struct Student表明类型 // 一般使用typedef关键字给struct Student定义一个新的类型名方便调用 { string name; float score; int age; int level; }Student_C;C无需typedef可直接使用定义好的结构体命名来定义结构体变量。5. 结构体可以多层嵌套struct Location //嵌套结构体 { int x; int y; int z; }; struct Target //结构体可以多层嵌套 { int index; string name; Location location; }; int main() { Target target1; std::cout input a int for target1.location.x: ; std::cin target1.location.x; //访问嵌套结构体内容 std::cout target1.location.x std::endl; }结构体初始化和使用1. 给结构体赋初值可以在创建结构体变量时用大括号赋值内部把给变量赋的值按照顺序用逗号隔开。下面的代码展示了如何创建一个有嵌套结构体的结构体变量并赋值并且展示了其中内容#include iostream struct Birthday { int year; int month; int day; }; struct Student //结构体名首字母大写区分变量 { std::string name; float score; int age; int grade; Birthday birthday; }; int main() { Student student { Li, 86.5, 21, 3, {2000, 10, 1} }; std::cout student info: std::endl name: student.name std::endl score: student.score std::endl age: student.age std::endl grade: student.grade std::endl birthday: student.birthday.year , student.birthday.month , student.birthday.day std::endl; }2. c中结构体的初始化方法在定义时初始化#include iostream struct Data { int x 1; int y 1; int z 1; }; int main() { Data data1{}; Data data2 {}; Data data3 { 0 }; std::cout data1: x: data1.x y: data1.y z: data1.z std::endl; std::cout data2: x: data2.x y: data2.y z: data2.z std::endl; std::cout data3: x: data3.x y: data3.y z: data3.z std::endl; }输出data1: x: 1 y: 1 z: 1data2: x: 1 y: 1 z: 1data3: x: 0 y: 1 z: 1在定义结构体时可以在结构体内直接初始化成员变量来给结构体成员一个默认值。在定义结构体时使用data{}变量名跟大括号方式初始化或是使用data{}变量名 等于 大括号方式初始化都是直接将结构体初始化为默认值。而使用data {0}变量名 等于 {0}只能将结构体中的第一个变量初始化为0。手动初始化Data data3; data3 { 0, 0, 0 };定义后使用memset初始化Data data3; memset(data3, 0, sizeof(data3));memset用法C 库函数void *memset(void *str, int c, size_t n)用于将一段内存区域设置为指定的值。其首个参数str为指向要清除内存区域的指针中间参数为要初始化的目标值类型为int在函数中会自动转化为目标类型最后一个参数是要清除区域的大小。常用sizeof取变量的大小用标识符表示变量所在的地址。给结构体添加一个初始化表或者构造函数struct DataIniList { int num1; int num2; int num3; DataIniList() :num1(0), num2(0), num3(0) {} //给结构体添加初始化表 }; struct DataConst { int num1; int num2; int num3; DataConst() //给结构体添加构造函数在构造函数中手动赋初值 { num1 0; num2 0; num3 0; } };使用Static关键字使用Static关键字未初始化的变量会被自动赋值0。但是使用static关键字会将变量声明为静态变量。3. 将结构体作为函数参数直接将结构体类型放在函数的参数表。// 打印Student结构体内容的函数将Student类型结构体作为参数 void printStudentInfo(Student student) { std::cout student info: std::endl name: student.name std::endl score: student.score std::endl age: student.age std::endl grade: student.grade std::endl birthday: student.birthday.year , student.birthday.month , student.birthday.day std::endl; } int main() { Student student { Li, 86.5, 21, 3, {2000, 10, 1} }; //创建结构体Student类型变量student并赋初值 Student student2 { Zhang, 79.0, 21, 3, {2000, 8, 10} }; printStudentInfo(student); printStudentInfo(student2); }

相关文章:

结构体——结构体基本用法,结构体初始化

存储数据时如果需要存储多个数据,我们可以使用数组。而如果同时需要存储多种数据,可以采用结构体的方式存储。用结构体的方式定义的数据类型是一种构造数据类型(抽象数据类型),是由各种的基本数据类型组成的。结构体弥…...

2026年Python开发工程师常见面试选择题

1. 关于 Python 中 list 和 tuple 的说法,正确的是? A. list 不可变,tuple 可变 B. list...

探秘电动汽车VCU与BMS的HIL仿真:从代码到实车的桥梁

电动汽车VCU hil BMS hil硬件在环仿真 其中包含新能源电动汽车整车建模说明, hil模型包含驾驶员模块,仪表模块,BCU整车控制器模块,MCU电机模块,TCU变速箱模块,减速器模块,BMS电池管理模块&#…...

C#自定义控件结合OpencvSharp实现斑点检测

C# 自定义控件 opencvsharp 斑点检测blob最近在做一个图像处理相关的项目,需要实时检测图片中的斑点,同时要求能够方便地在WinForms界面中展示和操作。经过一番调研和实践,决定采用C#自定义控件结合OpencvSharp来实现。这组合不仅充分发挥…...

AUKF电池SOC估计多种工况实验验证 基于自适应无迹卡尔曼滤波的电池电量估计MATLAB程序

AUKF电池SOC估计多种工况实验验证 基于自适应无迹卡尔曼滤波的电池电量估计MATLAB程序,基于AUKF的SOC估计,注释详细。 采用二阶RC模型,基于误差窗口统计的自适应调节方法(后面有文献截图)。 使用三项实验数据对AUKF进行…...

C#编程实现自定义控件与OpenCVsharp的图像处理技术,快速精确地找出圆的位置

C# 自定义控件 opencvsharp 找圆最近在做个工业视觉检测项目时,发现WinForm自带的PictureBox控件完全不够用。客户要求实时显示摄像头画面还要标出圆形瑕疵,这逼得我不得不撸起袖子造轮子——用C#自定义控件整合OpenCvSharp实现找圆功能。先搞个基础画…...

Maven 从零到精通实战专栏导读 - 24 篇系统教程助你成为团队核心

🚀 Maven 从零到精通实战专栏导读 - 24 篇系统教程助你成为团队核心 💡 摘要: 本文详细介绍全网最系统的 Maven 实战专栏,共 24 篇精品文章、25,000 行干货。从基础优化到企业级应用,从性能提升 60% 到 CI/CD 流水线搭建&#xff…...

0620-输液控制(固定阀值)-系统设计(51+1602+AD0832+U2003+KEY4)

功能描述 1、采用51单片机作为主控芯片; 2、采用光电传感器检测点滴滴速; 3、通过电机调整吊瓶高度以控制滴速; 4、当液位小于3cm时进行报警; 5、采用1602显示当前滴速、设置滴速、液位; 电路设计 采用Altium Desig…...

COMSOL 模型:局部共振压电超材料如何调谐水下低频吸声

COMSOL模型局部共振压电超材料调谐水下低频吸声在水下声学领域,低频噪声的控制一直是个重要的课题。局部共振压电超材料为水下低频吸声提供了一种新颖且极具潜力的解决方案。借助 COMSOL 强大的多物理场仿真能力,我们能够深入探究这一材料的吸声机制&…...

探索Comsol中高温金属熔化分解两相流模型

Comsol两相流模型,高温下的金属(固体)熔化分解过程,考虑汽化和液化,水平集,相变模型在材料科学与热物理领域,研究高温下金属的熔化分解过程至关重要。借助Comsol这一强大的多物理场仿真软件&…...

Python批量转换Word到PDF,新手直接复制运行【实测可用】

日常工作中,经常需要将多个Word文件批量转换为PDF(比如归档、汇报、传输),手动逐个“另存为”不仅耗时,还容易遗漏、出错。今天分享一段实测可用的Python代码,基于windows调用Word原生程序转换,…...

计算机毕业设计源码:python二手房数据挖掘与可视化系统 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

1、项目介绍 技术栈 Django框架、Echarts可视化工具、requests爬虫框架、HTML前端技术、Bootstrap响应式布局,用于全国二手房数据的采集清洗与多维度可视化分析,房源数据量达175万套。 功能模块系统首页数据总览数据可视化分析1(城市房…...

解决银河麒麟无SRS安装包的痛点:自己动手丰衣足食,rpm打包指南

大家好,最近在搞国产化适配,项目在银河麒麟高级服务器系统上,需要部署 SRS 做流媒体分发。 本来想着 yum install -y srs 一把梭,结果你懂的,官方源里压根没有,网上倒是有几个 SRPM 包,但版本老…...

计算机毕业设计源码:python房产大数据可视化分析平台 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...

计算机毕业设计源码:python二手房市场数据可视化系统 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

计算机毕业设计源码:python链家二手房数据采集分析平台 Django框架 可视化 Requests爬虫 房屋 房子 房源 数据分析 (建议收藏)✅

博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

【2026年滴滴春招- 3月15日 -第二题- 开心食堂】(题目+思路+JavaC++Python解析+在线测试)

题目内容 你开了一家食堂。新的一天的营业从第 000 时刻开始,这一天食堂将迎来 nnn 个顾客,其中第 iii</...

搭建调度中心->XXL_JOB

XXL-JOB 是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 1.克隆代码 使用 IDEA &#xff0c;从码云 https://gitee.com/xuxueli0323/xxl-job 克隆源码。从码云克隆的原因是&#xff0c;速度比较快。 克隆完成后&#xff0…...

【2026年拼多多春招- 3月15日 -第三题- 多多的配送轨迹】(题目+思路+JavaC++Python解析+在线测试)

题目内容 多多正在检查一段配送轨迹日志。日志长度为nnn,从起点(0,0)(0,0)(0,0)出发,按顺序记录了每一步移动指令。日志是一个长度为...

功率分流混联式混合动力车辆热管理建模与性能计算分析,对标丰田混合动力EVT构型,利用Simul...

功率分流混联式混合动力车辆热管理建模与性能计算分析&#xff0c;对标丰田混合动力EVT构型&#xff0c;利用Simulink建模&#xff0c;采用成熟软件架构&#xff0c;考虑驾驶乘员舱产热与空调调节系统&#xff0c;发动机产热建模与热管理系统&#xff0c;电动产热模型&#xff…...

机器视觉学习总结

一、视觉行业引入机器视觉是传感器技术的一个重要分支&#xff0c;其核心在于利用机器系统替代人眼和大脑进行测量与判断&#xff0c;实现非接触式的自动化检测。从技术本质上讲&#xff0c;机器视觉通过光 学装置和非接触传感器接收和处理真实物体的图像&#xff0c;从而获取所…...

SWD/JTAG Communication Failure的解决方法

以下是我的设备及环境。环境配置&#xff1a;1.keil已下载安装2.芯片pack包已导入3.下载安装NsLink调试器已完成4.CMSIS-DAP驱动已装好有几种解决方法&#xff1a;1.debug设置是否正确&#xff0c;我需要通过Debug USB进行烧录&#xff0c;所以debug设置选择CMSIS-DAP-NSLink&a…...

从实验室到生产线:YOLOv11多任务统一框架(检测+分割+姿态估计)行业应用

前言 “产线上需要同时检测零件缺陷、分割裂纹区域、还要估算机械臂抓取姿态,结果部署了三套不同的模型(YOLOv8, Mask R-CNN, HRNet),显存爆满,延迟叠加,系统根本跑不动?” “算法团队在实验室刷榜mAP很开心,但工程团队面对三个模型的同步、对齐、后处理冲突,头发都掉…...

YOLO26实战全流程:从数据集标注到端到端无NMS推理(附ProgLoss调参技巧)

前言 “训练YOLO模型,调参调到头秃,mAP还是卡在瓶颈上不去?” “部署时NMS后处理耗时占比30%,边缘设备上根本跑不满帧率?” “小目标检测一直是弱项,无论怎么调整Anchor或增加层数,漏检率依然居高不下?” 2026年1月,Ultralytics正式发布了YOLO26,这不仅仅是一次版本号…...

YOLOv8.3.133工业级实战:OpenVINO导出优化+Intel CPU推理,帧率突破120FPS

前言 “工厂产线只有Intel CPU工控机,没有独立显卡,跑YOLOv8只有15 FPS,根本跟不上流水线速度?” “想部署到边缘端,但NVIDIA Jetson成本太高,希望利用现有的Intel Core i7/i9或Xeon服务器资源?” “导出ONNX后推理还是慢,量化精度损失太大,业务方无法接受漏检?” 在…...

Vllm快速入门

背景 vLLM 是一个用于 LLM 推理和服务的快速易用的库。 vLLM 最初是在加州大学伯克利分校的 Sky Computing Lab 开发的&#xff0c;现已发展成为一个社区驱动的项目&#xff0c;融合了学术界和工业界的贡献。 核心细节参考官网&#xff1a;https://docs.vllm.com.cn/en/late…...

Aurogen:告别命令行,纯 Web 可视化快速上手 Claw 养殖,零基础也能轻松配置 Claw

一、前言 前段时间我开始沉迷于 OpenClaw 养殖。随着装上的 Skills 越来越多&#xff0c;问题也慢慢暴露出来了&#xff1a;当短期记忆、海量 Skills 和各种系统指令被一起塞进 System Prompt 后&#xff0c;上下文长度迅速膨胀&#xff0c;结果就是 回复速度明显变慢逻辑偶尔…...

【京东云云服务器部署Openclaw】简单、傻瓜三步部署成功流程

【京东云服务器部署Openclaw】简单、傻瓜三步部署成功流程 前言 最近发现京东云有个超值活动——9块9就能买一个月的轻量云服务器&#xff0c;正好可以用来部署最近很火的OpenClaw AI助手。本文将详细记录从购买服务器到成功运行OpenClaw的完整过程&#xff0c;希望对大家有所帮…...

Linux系统密码破解

环境准备&#xff1a; 虚拟机&#xff1a;VMware Workstation 17&#xff0c;系统&#xff1a;Red Hat&#xff0c;配置&#xff1a;16GB内存/8核处理器。通过登录界面修改root密码&#xff08;已知旧密码&#xff09;&#xff1a; 1. 在登录界面点击“未列出”或“其他” 2. 输…...

k8s问答题----初始化版

1.ca-certificates, gnupg, lsb-release 三个包的解释。答&#xff1a;ca-certificates 软件包提供常用的 SSL 证书&#xff0c;用于在 Linux 系统中进行安全的网络通信。 gnupg 软件包提供一系列用于保护数据安全的加密和解密的工具。 lsb-release 软件包包含了 Linux 发行版相…...