结构体(structure)的认识

news2024/11/26 17:56:54

前言——————希望现在在努力的各位都能感动以后享受成功的自己!


今天我们来了解了解一下结构体,结构体又有什么奥妙呢,废话不多说,何为结构体呢?------->结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。


结构体的声明

结构体如何声明呢?我们先看一下官方的格式。

那再看一下具体格式声明 是怎么样的。

像这样一个简单学生基本信息我们就可以完成了简单的声明。

需要注意的是结构体的声明并不会向内存申请空间,只有初始化后才会向内存申请空间。

结构体的初始化 

结构体如何初始化呢?我们继续往下看        

这里我说一种我经常用的初始化方式,即需要初始化结构体时我们可以像上面代码一样,

struct student  s ("s"为你自己取的变量名)。初始化时我们要按顺序来初始化结构体。

然后我们要把它们打印出来的时候,printf(”%s",只需变量名.结构体成员)。

即printf("age : %d ", s1.age);。


结构体的特殊声明

像上面代码所展示的便是 结构体的特殊声明------不完全声明。其省略了结构体标签 student,这便是不完全声明的结构体。

那么这里引申出一个问题,再看一段代码

这两个结构体都是不完全声明的结构体,那么假如我这样 使p=&a,那么各位大家觉得这样的代码合法吗?--------答案是不合法的。编译器会把上⾯的两个声明当成完全不同的两个类型,所以是非法的。 匿名的结构体类型,如果没有对结构体类型重命名的话,基本上只能使用一次。


结构体的自引用

大家可先看一段代码:

struct  BL
{


	struct next aa;
	int age;
	char sex[5];
	char name[6];
	char number[11];

};

大家觉得这合理吗?如果合理那么sizeof(struct BL) 的大小是多少呢?

仔细一想是不是觉得好像确实说不出它的大小,甚至会使结构体struct BL无穷大。

那么正确的自引用是怎样的呢?

这才是正确的结构体自引用,运用指针去接收。


 结构体的传参

大家可以先看下面一段代码

 

 大家可以观察看上面代码中两个函数print1 ,print2 哪个比较好。

答案是print2更优,因为函数传参的时候,参数是需要压栈,会有时间和空间上的系统开销。 如果传递⼀个结构体对象的时候,结构体过大·,参数压栈的的系统开销比较大·,所以会导致性能的下 降。所以我们选择指针的方式传参会更优。


今天文章到此为止。希望多多支持。 

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

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

相关文章

leetcode:滑动窗口

目录 1.定长滑动窗口 1.1 几乎唯一子数组的最大和(使用map来计数) 1.2 长度为k子数组中的最大和 2.不定长滑动窗口 2.1 最多k个重复元素的最长子数组 2.2 绝对差不超过限制的最长连续子数组(multiset) 2.3 将x减到0的最小操作数(正难则反 逆向思维) 2.4 统计…

分布式架构那些事儿

今天给大家搬运一波福利,那就是分布式架构那些事!说到分布式架构,你是不是觉得高大上、遥不可及?别慌,我会讲得通俗易懂,让你秒变架构大神!听完之后直接带回家装逼!一起来Get新知识&…

< Linux >缓冲区

在上一篇文件的重定向,通常会涉及文件描述符的操控。文件描述符1(fd 1)通常代表着标准输出(stdout),它默认是指向用户的终端或控制台。当执行文件重定向操作时,如果我们关闭文件描述符1&#xf…

SurfaceFlinger的commit/handleTransaction分析

整体背景介绍 hi,粉丝朋友们: 大家好!本节我们来讲解一下SurfaceFlinger主要合成工作的第一个阶段任务commit 一般SurfaceFlinger端的合成工作主要有两个 1.commit 主要就是处理app端发起的一系列transaction的事务请求,需要对这…

Python笔记03-判断和循环

文章目录 比较运算符if-else语句while语句for循环循环中断 比较运算符 字面量True表示真,字面量False表示假 if-else语句 if语句判断条件的结果一定要是布尔类型 不要忘记判断条件后的: 归属于if语句的代码块,需在前方填充4个空格缩进 age…

Python武器库开发-武器库篇之C段扫描器开发(四十三)

Python武器库开发-武器库篇之C段扫描器开发(四十三) 在我们进行渗透过程中的信息收集的步骤时,收集资产目标的C段也是非常重要的一部分。 C段是指互联网中的一类IP地址。IP地址是互联网上每台设备的唯一标识符。IP地址由一系列数字组成,通常以点分十进…

性能分析与调优: Linux 实现 CPU剖析与火焰图

目录 一、实验 1.环境 2.CPU 剖析 3.CPU火焰图 一、实验 1.环境 (1)主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系统 prometheus、node_exporter 192.168.204.18grafana监测GUIgrafana192.168.204.19agent 监测 主机 node_exporter192…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -全局异常统一处理实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

基于ssm的孩童收养信息管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本孩童收养信息管理就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

Python库中关于时间的常见操作

目录 导入所需的库 获取当前时间 格式化日期和时间 解析日期和时间字符串 时间戳操作 获取当前时间戳: 将时间戳转换为日期和时间: 时间差操作 时间日期的时区处理 时间日期的随机生成 注意事项 总结 在Python中,时间处理是一个重…

ppTinyPose的C++部署(jetson)

文章目录 环境准备硬件软件修改代码编译和运行运行结果参考环境准备 硬件 Jetson AGX Orin 64GB 软件 gcc/g++ >= 5.4(推荐8.2)cmake >= 3.10.0jetpack >= 4.6.1如果需要集成Paddle Inference后端,在Paddle Inference预编译库页面根据开发环境选择对应的Jetpack C…

7.数据转换、格式化、校验

日期字符串格式的表单参数,提交后转换为 Date 类型 <!-- 解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay :<form:input path="birthDay"/>Employee 类中增加日期类型属性: //关于类型转换 private Date birthDay ;数据绑定流程原理 …

快麦ERP退货借助APPlink快速同步CRM

什么是APPlink&#xff1f; APPlink是RestCloud打造的一款简单易用的零代码自动化集成平台&#xff0c;为业务流程提供自动化的解决方案&#xff0c;将企业内部的核心系统以及第三方应用程序和云服务等进行集成。无论是开发人员还是业务人员&#xff0c;都可以使用APPlink轻松…

Mysql死锁问题Deadlock found when trying to get lock;try restarting transaction

一、问题描述 今天测试在测试环境做压测&#xff0c;发现了一个报错&#xff0c;来找我帮忙看&#xff0c;如下图&#xff1a; 二、问题排查 先去服务器上&#xff0c;看看死锁的日志&#xff0c;找到 mysql 的安装路径&#xff0c;使用如下命令登录 mysql mysql -h 数据库IP…

科技助力教育:数字化如何改变家校社协同育人?

近年来,随着社会的快速发展,教育的责任已不再仅局限于学校。家庭、学校和社会协同育人理念,正成为促进教育高质量发展的关键要素。 2023年初,教育部等十三部门联合印发《关于健全学校家庭社会协同育人机制的意见》,提出到“十四五”时期末,形成更加完善的由“学校积极主导、家…

山西电力市场日前价格预测【2024-01-09】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-09&#xff09;山西电力市场全天平均日前电价为314.92元/MWh。其中&#xff0c;最高日前电价为593.66元/MWh&#xff0c;预计出现在18:15。最低日前电价为54.95元/MWh&#xff0c;预计出…

树莓派3B+ /+ CSI摄像头 + FFmpeg + SRS 实现直播推流

简介&#xff1a; 手头有一个树莓派3B 和一块CSI摄像头&#xff0c;想要实现一个推拉流直播的效果。 所需材料&#xff1a;开发板&#xff08;我用的是树莓派3B&#xff09;、CIS摄像头、云服务器&#xff08;用来搭建SRS服务器&#xff09; 具体实现思路&#xff1a; 使用…

看图识熊(四)

概述 人工智能已经快要进入应用的高峰期了&#xff0c;但并不需要每个人都学习算法、建模。对于程序员来说&#xff0c;应该先从自己会的方向入手&#xff0c;学习如何应用AI来解决问题&#xff0c;开发应用。 本文将带着大家动手&#xff0c;从头做一个看图识熊的应用&#…

PyTorch数据并行(DP/DDP)浅析

一直以来都是用的单机单卡训练模型&#xff0c;虽然很多情况下已经足够了&#xff0c;但总有一些情况得上分布式训练&#xff1a; 模型大到一张卡放不下&#xff1b;单张卡batch size不敢设太大&#xff0c;训练速度慢&#xff1b;当你有好几张卡&#xff0c;不想浪费&#xf…

校园跑腿小程序(前后端已完成)可做项目,可当毕设,支持二创

此小程序为我单独在小程序上运行的结果&#xff0c;图片信息、列表信息等没有出现是因为服务器到期了&#xff0c;资源被释放了&#xff0c;无法显示。但是后端是已经实现了的&#xff0c;有兴趣的同学可以私聊我。 效果预览