C语言初级结构体详解

C语言结构体详解 位段的几个成员共用同一个字节,有些成员的起始位置并不是某个字节的起始位置,这些位置是没有地址的。第二个int类型的对齐数为4,对齐到4的整数倍,占据第4 5 6 7号字节。其中2 3号字节被浪费了。注意:在VS2022环境中,位段的内存分配是从一个内存块(1B或4B)中,由高地址向低地址分配的,如果剩余的大小不够下一个元素的大小,则该内存块的剩余位置将舍弃,在下一个内存块(相较于高地址的一个)中继续存放。如果传递⼀个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。 阅读详情

  数据经常以成组的形式存在,我们通常会用到数组,而当这些值的类型不同时,数组便无能为力了,这是就需要结构体来进行存储,在C语言中,结构体可以把不同类型的数组存储在一起。

  ## 结构体基础知识

  结构体和数组一样,也是一些值的集合,这些值成为它的成员,但一个结构体的各个成员可能具有不同的类型。
  由于结构体成员的类型可能不同,所以并不能像数组一样通过下标进行访问,但是,结构体中的每个成员都有自己的名字,它们可以通过名字访问。

  ### 结构体声明

  在声明结构体时,必须列出它包含的所有成员,这个列表包括成员的类型和名字。

struct Stu
{
	char name[20];
	int age;
	char sex[10];
}S;

  这便创建了一个名S的struct Stu类型的结构体对象,结构体允许多个对象使用同一个结构体类型那么当需要创建多个同类型的对象时该怎么使用呢?

struct Stu
{
	char name[20];
	int age;
	char sex[10];
}S,A,B,C;

  需要用一个类型创建多个对象时,在对象名字后面加逗号,后跟需要继续创建的对象名字即可

  ###结构体成员

  结构体成员可以是标量、数组、指针甚至是其他结构。

struct Stu
{
	char name[20];
	int age;
	char *p;
}S;

  一个结构成员的名字可以和其他结构的成员名字相同,成员的访问方式会允许你指定任何一个成员而不至于产生歧义。

  ###成员结构的访问

  结构体变量的成员是通过点(.)操作符来进行访问的。点操作符接受两个操作数,左边的操作数就是结构体变量的名字,右边的操作数就是需要访问的成员的名字。这个表达式的结果就是指定的成员。

  如下代码所示:

struct Stu
{
	char name[20];
	int age;
	char sex[10];
}S;
int main()
{
	S.age = 10;
	printf("%d",S.age);
	return 0;
}

  名字为age的成员,所以S.age就表示这个成员,你可以对他进行一系列操作。

  ###结构体成员的间接访问

  如果你拥有一个指向结构体的指针,该如何访问它的成员呢?
首先要对指针执行间接访问操作,使你获得这个结构体,然后用点操作符来访问它的成员。但是,这里需要注意的一点是,点操作符的优先级高于间接访问操作符,所以需要在表达式中使用括号(),确保简介访问首先执行。
  可以用(*p).age来进行访问

  同时C语言提供了另一种更为方便直观的间接访问结构体内成员的操作符   ” -> “
  可以通过p->age的方式来访问。
代码如下:

struct Stu
{
	char name[20];
	int age;
	char *p;
}S;
int main()
{
	struct Stu * p=&S;
	printf("%d",(*p).age);
	printf("%d", p->age);
	return 0;
}

  个人感觉C语言的结构体为面向对象的语言打下了不可磨灭基础,能够很好理解结构体的概念与形式,就可以相对容易的学习类和对象的概念。这里只做初级入门时所用到功能的详解,结构体内所涵盖的知识还有很多,还请各路大神多多指教。

基于STM32、HAL库的MICRF112YMM-TR 无线收发器驱动程序设计 内部集成了 VCO、PLL、PA、LNA、混频器、滤波器等射频功能单元,极大减少了外部元件数量,降低了设计和布线难度。: 具有多种工作模式(睡眠、待机、接收、发射),待机电流极低,非常适合电池供电的物联网(IoT)设备。是 Microchip 公司生产的一款高性能、低功耗的单片 UHF ASK/FSK 收发器芯片。: 支持 ASK (幅移键控) 和 FSK (频移键控) 调制,适应不同应用需求。// 可以添加其他配置参数,如中心频率、数据速率等。智能家居(安防、遥控、传感)远程钥匙进入系统 (RKE) 阅读详情

相关推荐

5分钟搞定CST周期性结构仿真:共面波导色散曲线快速生成技巧

本文提供了一套在CST Studio Suite中快速仿真周期性结构并生成色散曲线的标准化流程。针对共面波导设计,重点解析了周期性边界条件的核心设置、本征模求解器(JDM算法)的优化技巧,以及通过参数扫描与后处理模板实现自动化,旨在帮助射频与微波工程师在5分钟内高效完成关键性能验证。

blue的专栏 1247

java引用类型变量有哪些,java – 有没有办法引用当前类型的类型变量?

要建立在StriplingWarrior’s answer上,我认为需要以下模式(这是一个分层流利的构建器API的方法)。解首先,一个基本的抽象类(或接口),其中列出了用于返回扩展类的实例的运行时类型的合同:/*** @param The runtime type of the implementor.*/abstract class SelfTyped> {/*** @return Th...

weixin_31043675的博客 142

人形机器人系列——硬件介绍

人形机器人是多领域交叉技术的产物,主要由三大系统组成:感知系统、决策系统和执行系统。感知系统感知系统是人形机器人获取外界信息的途径,主要由各种传感器组成。其中,视觉传感器用于获取图像信息,如摄像头、激光雷达等;触觉传感器用于感知触碰和压力,如力/力矩传感器、声学传感器等。这些传感器收集到的信息为机器人的决策和执行提供基础。决策系统决策系统是人形机器人的大脑,负责处理和决策各种信息。它由芯片和算法组成。芯片是硬件基础,提供计算能力;算法是软件基础,用于处理和分析传感器收集到的信息,并做出相应的决策。执行系统。

liangwqi的博客 1万+

【C语言初级课程详解】第22课时-C语言结构体

结构体定义由关键字 struct 和结构体名组成,结构体名可以根据需要自行定义。...tag是结构体标签。是标准的变量定义,比如 int i;或者 float f;,或者其他有效的变量定义。结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。} book;在一般情况下,这 3 部分至少要出现 2 个。//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c//同时又声明了结构体变量s1//这个结构体并没有标明其标签structint a;

xzs51job的专栏 1047

Mac电脑用Latex论文排版3天速成5天实战de笔记

我后悔了,这五天竞赛搞得我视力都下降了...一个冲动的决定后成为数模竞赛论文写手,3天速成+5天时间=点亮攻克latex写论文技能💡关于Overleaf我是Mac,曾经按照大部分推荐的方式用TEXshop+vs code,但是把模板导入就开始报错。跟着少之又少的适配mac的教程(此时我已知道大概是走错路了)改了配置也无效。海鲜市场找佬改了半天,佬问我:一定要用VC吗?我说,那倒也不是。于是佬推荐我overleaf,三下五除二帮我挑配了环境,美汁汁收了我30块钱。

luwanjoyce的博客 2247

智能车数字图像处理算法入门及C语言实现

智能车图像的最最基本入门算法介绍及C语言实现,二值化 - 特征识别 - 补线 - 中心巡线 - 偏差曲率计算。

不想随波逐流的大学生一枚,我们每个人都在努力奔跑 5110

C语言初级篇-----结构体基础内容详解

C语言结构体基础内容详解!

.很冷的博客 1047

Ubuntu24.04/20.04设置网络共享文件夹

Ubuntu20.04利用向日葵远程控制时,不能传输文件。使用linux版本QQ来传输是可以的,不过linuxqq功能真的很弱。因此,打算在Ubuntu系统中建立一个共享文件夹,可在局域网中访问。 1、新建共享文件夹 获取root权限,或者登陆root账户。可在/home文件夹(或其它文件夹)下新建一个文件夹,如share。 右击文件夹,选择“本地网络共享”菜单。按下图设置。 点击确定。如果系统已经安装了samba服务器,就可以进入第3步。如果没有,会提示安装,按提示安装,可能会出错,可进.

willhu2008的专栏 2万+

C语言 | 结构体使用详解

本文更好的排版方式:【C语言笔记】结构体 我们都知道C语言中变量的类型决定了变量存储占用的空间。当我们要使用一个变量保存年龄时可以将其声明为int类型,当我们要使用一个变量保存某一科目的考试成绩时可以将其声明为float。 那么,当我们要做一个学生信息管理系统时,需要保存学生的姓名、学号、年龄等信息,该怎么做呢? 如当要保存三个学生的信息时, 方法一是: char *name1,*name2,...

嵌入式大杂烩 3万+

储能系统架构和控制

探讨了储能系统中EMS(能源管理系统)、BMS(电池管理系统)和PCS(功率转换系统)之间的协同机制,以及组串式和集中式储能系统的技术架构、优势和局限性。EMS根据电价、电网需求和电池状态制定充放电策略,BMS提供电池数据,PCS执行充放电控制。组串式系统具有独立管理和灵活扩展的优势,但成本较高;集中式系统成本效益高,但存在环流和木桶效应问题。

蓝龙宝藏的博客 3966

详述 MIMIC 数据库26张数据表(一)

作者按照自身理解和实验要求对MIMIC-III的26张数据表进行整理归纳并进行介绍。

越努力 越幸运 7237

C语言详解:结构体

结构体 当然本次结构体仍不会讲的特别深入,在后面的自定义类型进阶会更加深入的讲到这部分内容。 结构(体)是一些值的集合,这些值被称为成员变量。结构的每个成员变量可以具有不同类型。 我们所学过的类型如:char,int,float,double等,都只能描述单一变量。但是结构体,顾名思义,是多个变量的集合,其中包含多个单一变量。所以C语言就发明了结构体用于用来描述复杂对象,如:书,人等具有多个特征的变量。 结构体类型的声明 结构体声明的语法结构 struct tag//结构体名称 { member

yourfriendyo的博客 2万+

飞牛fnNAS文件的超快检索

本文介绍了如何在NAS系统中部署fsearch文件搜索工具,以解决海量文件检索效率低下的问题。通过Docker容器部署ayound/file-search镜像,建立缓存和数据目录后,用户可通过8012端口访问fsearch界面。该工具支持快速关键字检索,速度媲美PC端的Everything,但需等待索引完成才能获得完整结果。虽然文件预览功能有待完善,但其高效的搜索性能值得推荐。文章还提及可通过zerotier实现远程访问,并提供了相关技术博客的参考链接。

dgnankai的专栏 1147

C语言结构体(详解)

int age;int age;int age;} Student;

m0_61315608的博客 5952

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C语言-结构体-详解

C语言中,结构体的详解。

夜泉的博客 2736

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C语言详解(结构体)

结构体详解

小羊的博客 2798

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C语言——结构体

结构体在C编程或者说数据结构中有着举足轻重的地位,为了熟练地运用结构体,本文基本总结了结构体所有的知识点,包含结构体定义、初始化和引用、结构体传参、结构体指针,以及结构体内存对齐,还捎带介绍了位段的相关知识。

weixin_45389997的博客 8004

【C语言】结构体

struct — 结构体的关键字。 student —结构体的标签,可以随意的替换看你指向的对象是谁了。 structstudent ——叫做结构体类型。 大括号 { }里面的内容被称作是:成员变量, 注意大括号后面必须要有分号,可以加成员列表,分号前面内容,可以是全局的结构体变量(一般都不会去使用),在代码中我们要尽可能的去少的使用全局变量。 在函数中 mation —— 结构体类型的变量,当然这里我直接student mation;是可以的,因为我用了typedef关键字,当然这个是可 ......

"謓泽"正在路上朝着"攻城狮"方向"前进四"! 4239

C语言——结构体(超详解)

C语言——结构体(超详解)

hjx1235的博客 3230

【C语言】——结构体

摘要,写什么好呢?

yusjushd的博客 1846

c语言结构体详解

char c;int i;double d;讲解按顺序,先是s2.c1 ,该为字符,大小为1个字节,<8,所以对齐数为1又因为起始位置偏移量为0所以接着就是嵌套结构体了,开始进入结构体s3s3.d为double类型,大小为8个字节 == 8,所以对齐数为8又因为起始位置要为对齐数的整数倍所以最终为。

L070117的博客 2394

【C语言】结构体详解

在计算机编程的世界中,数据的组织和存储是至关重要的。C语言作为一门强大而灵活的编程语言,提供了结构体(Structures)这一强大的工具,使得我们能够更加有效地组织和管理数据。结构体是C语言中一种用户自定义的数据类型,它允许我们将不同数据类型的元素组合在一起,形成一个更为复杂的数据结构。通过结构体,我们可以模拟现实世界中的实体,将相关的信息组织起来,使得代码更加清晰、可读性更强。在这篇博客中,我们将深入探讨C语言结构体的概念、用法以及它在程序设计中的实际应用。

m0_68002296的博客 2111
上一篇: C语言扫雷游戏详解及代码
下一篇: 关于冯诺依曼体系结构浅析
EndOrBegin
博客等级 码龄7年 14粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值