返回首页  设为首页  加入收藏  今天是:
网站首页电脑主板电脑cpu电脑内存电脑硬盘电脑显卡电脑电源显示器电脑配件电脑维修
相关文章
 嵌入式C语言中的结构是什么?
 机构:预计今年中国便携式显…
 修图主机显示器你升级了吗?…
 苹果发布新款显示器固件更新…
 选择27寸显示器的最佳分辨率
 千元即可买到4k和2k高刷显示…
 R7 5800H做剪辑吗 R7 5800H核…
 高通不止担忧华为的翻盘
 ROG 掌机一周体验讲讲几个买…
 华为的下一个“卡脖子”难题…
 ROG魔霸新锐2023搭载RTX4060…
 台风天居家如何移动办公?有…
 为什么买B760主板要选带WiFi…
 持续颠覆想象!京东方赋能OP…
 7000元预算手机怎么选?买iP…
 第四名!乐橙获2023央国资房…
 全球超薄5G卡片WiFi 中兴F50…
 2024款哪吒S上市!续航给力配…
 DIY小技巧:CPU为什么不容易…
 EUV光刻机的局限与半导体产业…
 V纪录解码广东制造业当家:专…
 3D建模和3D渲染是吃CPU还是显…
 goosegooseduck鹅鸭杀无法创…
 今天来介绍一下什么是大4pin…
 搭载MTT S80国产GPU 强化游戏…
 PCI接口在CAN通信中有何作用…
 先收藏!激光打印机四大常见…
 Wi-Fi 7技术登场:英特尔BE2…
 单条128GB DDR5内存出样:1T…
 华为nova10有没有无线充电 可…
 iPhone16曝光:全系高刷+8G内…
 红米Redmi Note 12什么时候发…
 iPad 10运行内存多大 电池容…
 2077拍照比赛回归:4090显卡…
 三星推出新款S49CG932SC显示…
 华硕将带来ProArt PA32UCXR:…
 三星49寸超宽带鱼屏OLED显示…
 韩媒:全球显示器销量第一输…
 体验一流的电竞显示器 优派主…
 LG官宣量产17英寸OLED可折叠…
 英伟达承认Win1110高CPU占用…
 酷睿I7 12700H睿频是多少 酷…
 三星10月将在印度生产笔记本…
 宏碁推出非凡 Go Pro 笔记本…
 无立柱兼容背插主板!300价位…
 专精特新看中国|主板上“盖…
 教师节•讲台上的神仙眷…
 专精特新看山东丨主板上“盖…
 首款“印度制造”PC主板将推…
 超占手机内存又不敢删!这个…
专题栏目
网络
您现在的位置: 电脑评测网 >> 电脑内存 >> 正文
高级搜索
嵌入式C语言中的结构是什么?
作者:佚名 文章来源:本站原创 点击数: 更新时间:2023/10/2 20:28:45 | 【字体:

  佘诗曼郑嘉颖吻戏语法以声明结构。最后将简要介绍数据对齐要求。可以通过简单地重新排列其成员的顺序来减小结构的大小。

  可以将在逻辑上彼此相关的同一类型的多个变量分组为数组。使用一个组而不是一组自变量,可以更方便地安排和使用数据。例如,可以定义以下数组来存储数字化语音输入的ADC的最后50个样本:

  请注意,uint16_t是无符号整数类型,宽度恰好为16位。这是在C标准库stdint.h中定义的,它提供了与系统规范无关的特定位长度的数据类型。数组可用于对多个具有相同数据类型的变量进行分组。如果不同数据类型的变量之间存在连接怎么办?可以在程序中将这些变量视为一个组吗?例如,假设需要指定生成上述语音 阵列的ADC的采样率。可以定义一个浮点变量来存储采样率:

  尽管变量voice和sample_rate彼此相关,但它们被定义为两个独立变量。为了将这两个变量相互关联,我们可以使用称为结构的C语言的强大数据结构。结构允许将不同的数据类型进行分组并将它们作为单个数据对象处理。结构可以包括不同种类的变量类型,例如其他结构、指向函数的指针、指向结构的指针等。对于语音示例可以使用以下结构:

  在这种情况下,有一个名为record的结构,它有两个不同的成员或字段:第一个成员是uint16_t元素的数组,第二个成员是float类型的变量。语法以关键字struct开头。struct关键字后面的单词是一个可选名称,用于以后引用该结构。将在本文的其余部分讨论定义和使用结构的其他细节。

  上面的例子指出了结构的一个重要应用,即定义了可以将不同类型的单个变量相互关联的依赖于应用程序的数据对象。这不仅可以实现操作数据的有效方式,还可以实现称为数据结构的专用结构。数据结构可用于各种应用,例如两个嵌入式系统之间的消息传递以及将从传感器收集的数据存储在非连续存储器位置中。

  另外,当程序需要访问内存映射微控制器外围设备的寄存器时,结构是有用的数据对象。

  这指定了用于创建此类型的未来变量的布局或模板。该模板包含一个uint16_t数组和一个float类型的变量。模板的名称是record,它位于关键字struct之后。值得一提的是,存储结构模板没有内存分配。只有在定义了基于此布局的结构变量之后,才会进行内存分配。以下代码声明了上述模板的变量mic1:

  为变量mic1分配了一段内存。它有空间来存储数组的四个uint16_t元素和一个float变量。可以使用成员运算符(.)访问结构的成员。例如,以下代码将100分配给数组的第一个元素,并将sample_rate的值复制到fs变量(必须是float类型)。

  我们在前一节中研究了一种声明结构的方法。C语言支持本节中将要讨论的一些其他格式。你可能会在整个程序中坚持使用一种格式,但熟悉其他格式有时可能会有所帮助。声明结构模板的一般语法是:

  该tag_name和variable_name是可选的标识符。我们通常会看到这两个标识符中的至少一个,但在某些情况下我们可以消除它们。语法1:当tag_name和variable_name都存在时,我们就在模板之后定义结构变量。使用此语法,我们可以重写上一个示例,如下所示:

  语法2:仅包含variable_name。使用这种语法,我们可以重写上一节中的示例,如下所示:

  在这种情况下,我们必须在模板之后定义所有变量,并且我们不能在程序中定义任何其他变量(因为模板没有名称,我们以后也不能引用它)。

  语法3:在这种情况下,没有tag_name或variable_name。以这种方式定义的结构模板称为匿名结构。可以在另一个结构或联合中定义匿名结构。下面给出一个例子:

  要访问上述匿名结构的成员,我们可以使用成员运算符(.)。以下代码将1.2分配给成员f。

  由于结构是匿名的,所以我们只使用一次成员运算符来访问它的成员。如果它有如下示例中所示的名称,则必须使用成员运算符两次:

  如你所见,匿名结构可以使代码更具可读性和更简洁。也可以使用typedef关键字和结构来定义新的数据类型。我们将在以后的文章中介绍这种方法。

  C标准保证结构的成员将按照在结构中声明成员的顺序一个接一个地位于内存中。第一个成员的内存地址将与结构本身的地址相同。请考虑以下示例:

  将分配四个存储器位置来存储变量C、D、E和F。内存位置的顺序将与声明成员的顺序相匹配:C的位置将具有最低地址,然后是D、E和最终的F。我们需要多少字节来存储这个结构?考虑到变量的大小,我们知道,至少需要1 + 4 + 1 + 2 = 8个字节来存储这个结构。但是,如果我们为32位机器编译这段代码,我们会惊奇地发现MyStruct的大小是12个字节而不是8个字节!这是因为编译器在为结构的不同成员分配内存时具有某些约束。例如,32位整数只能存储在地址可被4整除的内存位置。实现这种称为数据对齐要求的约束,以使处理器更有效地访问变量。数据对齐会导致内存布局中的一些浪费空间(或填充)。这个主题只在这里介绍; 我们将在本系列的下一篇文章中详细介绍。

  了解数据对齐要求后,我们可能能够重新排列结构中成员的顺序,并提高内存使用效率。例如,如果我们重写上面给出的结构,它的大小将在32位机器上减少到8个字节。

  对于内存受限的嵌入式系统,将数据对象的大小从12个字节减少到8个字节可以节省大量成本,特别是当程序需要许多这些数据对象时。

  结构允许我们定义依赖于应用程序的数据对象,这些对象可以将不同类型的单个变量相互关联,这就产生了一种有效的数据处理方法;称为数据结构的专用结构可用于各种应用,例如两个嵌入式系统之间的消息传递以及将从传感器收集的数据存储在非连续存储器位置中;当我们需要访问内存映射微控制器外围设备的寄存器时,结构是有用的;我们可以通过重新排列结构中成员的顺序来提高内存使用效率。

  声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。举报投诉

  的跳转语句。用于无条件跳转到其他标签。它将控制权转移到程序的其他部分。

  ,堆和栈都是用来存储变量的内存区域,但它们在存储和使用变量方面有很大的区别。

  ,堆和栈都是用来存储变量的内存区域,但它们在存储和使用变量方面有很大的区别。

  的开发中,位操作是很常用的一个知识点,涉及到按位(bit)操作的地方也是很常见的。本文分享一些

  知识和重点,希望每个读到这篇文章的人都能有所收获。1. 关键字关键字是

  开发的过程中占有十分重要的地位,可以说两者之间“你中有我,我中有你”。但是有很多人会想,有那么多的开发

  开发也一样,它也有一套优秀的编辑、编译及调试工具。掌握这些工具的使用是

  为了方便大家平时公交、地铁、外出办事也能用手机回顾查看文章,我特意用心精选,并分类整理了部分文章:

  programming language was designed by the Dennis Ritchie in 1972 in Bell Labs.

  00. 目录文章目录00. 目录01. volatile概述02. volatile应用场景03. volatile应用示例04.

  设计、数组、函数、预处理:《打字游戏》、《个税征收查询系统》2、字符串操作、指针: 《手机短信分析程序》、《条形码生成器》...

  体语法是非常重要,也是非常有用的,相信看了最近几节的读者应该明白。事实上,在实际的

  开发的过程中占有十分重要的地位,可以说两者之间“你中有我,我中有你”。

  尽管变量voice和sample_rate彼此相关,但它们被定义为两个独立变量。为了将这两个变量相互关联,我们可以使用称为

  的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。

  开发的入门门槛还是比较高的,不仅要懂较底层软件,对软件专业水平要求较高,而且必须懂得硬件的工作原理,

  的开发板上的,CPU和电脑不一样,所以编译器也是不一样的,生成的可执行程序也是不一样的。

  的开发板上的,CPU和电脑不一样,所以编译器也是不一样的,生成的可执行程序也是不一样的。

电脑内存录入:admin    责任编辑:admin 
  • 上一个电脑内存:

  • 下一个电脑内存: 没有了
  •  
     栏目文章
    普通电脑内存 嵌入式C语言中的结构是什么? (10-02)
    普通电脑内存 单条128GB DDR5内存出样:1TB也不远了 (10-01)
    普通电脑内存 华为nova10有没有无线充电 可以插内存卡吗? (10-01)
    普通电脑内存 iPhone16曝光:全系高刷+8G内存+256G起步售价… (10-01)
    普通电脑内存 红米Redmi Note 12什么时候发布 可以插内存卡… (10-01)
    普通电脑内存 iPad 10运行内存多大 电池容量多大? (10-01)
    普通电脑内存 超占手机内存又不敢删!这个热搜让无数人感同… (10-01)
    普通电脑内存 用户苦“内存刺客”久矣多大的手机内存能治好… (10-01)
    普通电脑内存 10年间手机内存从1G到16GPC内存为何依然停滞不… (10-01)
    普通电脑内存 i7-13700KF睿频是多少 最大内存带宽是多少? (10-01)
    普通电脑内存 美商海盗船发布新款统治者泰坦DDR5内存:高端… (10-01)
    普通电脑内存 “我第一次给 Linux 内核做贡献不仅被剥夺了还… (09-30)
    普通电脑内存 最便宜133英寸手写屏笔记本来自华硕?2999元还… (09-30)
    普通电脑内存 内存是什么在电脑中有什么作用_内存教程-查字… (09-30)
    普通电脑内存 iPhone 15 Pro烫成“火龙果”与台积电有关?郭… (09-30)
    普通电脑内存 内存条科普什么是内存条 (09-30)
    普通电脑内存 有容乃大——手机RAM和ROM基础知识科普 (09-29)
    普通电脑内存 电脑安装内存ram是什么意思 (09-29)
    普通电脑内存 苹果X手机运行内存是多少? (09-29)
    普通电脑内存 手机运存越大越好吗?8G和12G怎么选?选择多大… (09-29)