您的位置 首页 嵌入式

嵌入式C语言中的组成结构是什么

嵌入式C语言中的组成结构是什么-尽管变量voice和sample_rate彼此相关,但它们被定义为两个独立变量。为了将这两个变量相互关联,我们可以使用称为结构的C语言的强大数据结构。

在介绍结构之后,将看一下这个强大数据目标的一些重要运用。然后将查看C言语语法以声明结构。最终将扼要介绍数据对齐要求。能够经过简略地重新排列其成员的次序来减小结构的巨细。能够将在逻辑上互相相关的同一类型的多个变量分组为数组。运用一个组而不是一组自变量,能够更方便地组织和运用数据。

请注意,uint16_t是无符号整数类型,宽度刚好为16位。这是在C规范库stdint.h中界说的,它供给了与体系规范无关的特定位长度的数据类型。数组可用于对多个具有相同数据类型的变量进行分组。假如不同数据类型的变量之间存在衔接怎么办?能够在程序中将这些变量视为一个组吗?例如,假定需求指定生成上述语音 阵列的ADC的采样率。

虽然变量voice和sample_rate互相相关,但它们被界说为两个独立变量。为了将这两个变量彼此相关,咱们能够运用称为结构的C言语的强壮数据结构。结构答应将不同的数据类型进行分组并将它们作为单个数据目标处理。结构能够包括不同品种的变量类型,例如其他结构、指向函数的指针、指向结构的指针等。

在这种情况下,有一个名为record的结构,它有两个不同的成员或字段:第一个成员是uint16_t元素的数组,第二个成员是float类型的变量。语法以要害字struct最初。struct要害字后面的单词是一个可选称号,用于今后引证该结构。将在本文的其余部分评论界说和运用结构的其他细节。

结构的一个重要运用,即界说了能够将不同类型的单个变量彼此相关的依赖于运用程序的数据目标。这不仅能够完成操作数据的有用办法,还能够完成称为数据结构的专用结构。数据结构可用于各种运用,例如两个嵌入式体系之间的音讯传递以及将从传感器搜集的数据存储在非接连存储器方位中。

嵌入式C中的组成结构是什么

别的,当程序需求拜访内存映射微控制器外围设备的寄存器时,结构是有用的数据目标。这指定了用于创立此类型的未来变量的布局或模板。该模板包括一个uint16_t数组和一个float类型的变量。模板的称号是record,它坐落要害字struct之后。值得一提的是,存储结构模板没有内存分配。只要在界说了基于此布局的结构变量之后,才会进行内存分配。

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

咱们在前一节中研讨了一种声明结构的办法。C言语支撑本节中即将评论的一些其他格局。你或许会在整个程序中坚持运用一种格局,但了解其他格局有时或许会有所协助。该tag_name和variable_name是可选的标识符。咱们通常会看到这两个标识符中的至少一个,但在某些情况下咱们能够消除它们。语法1:当tag_name和variable_name都存在时,咱们就在模板之后界说结构变量。

现在,假如咱们需求界说另一个变量(mic2),咱们能够编写struct record mic2;语法2:仅包括variable_name。在这种情况下,咱们有必要在模板之后界说一切变量,而且咱们不能在程序中界说任何其他变量(因为模板没有称号,咱们今后也不能引证它)。语法3:在这种情况下,没有tag_name或variable_name。以这种办法界说的结构模板称为匿名结构。能够在另一个结构或联合中界说匿名结构。

要拜访上述匿名结构的成员,咱们能够运用成员运算符,因为结构是匿名的,所以咱们只运用一次成员运算符来拜访它的成员。在这种情况下,咱们应该运用以下代码将1.2分配给f:test_var.nested.f=1.2;如你所见,匿名结构能够使代码更具可读性和更简练。也能够运用typedef要害字和结构来界说新的数据类型。咱们将在今后的文章中介绍这种办法。

C规范确保结构的成员将按照在结构中声明成员的次序一个接一个地坐落内存中。第一个成员的内存地址将与结构自身的地址相同。了解数据对齐要求后,咱们或许能够重新排列结构中成员的次序,并进步内存运用功率。例如,假如咱们重写上面给出的结构,它的巨细将在32位机器上削减到8个字节。关于内存受限的嵌入式体系,将数据目标的巨细从12个字节削减到8个字节能够节约很多本钱,特别是当程序需求许多这些数据目标时。

结构答应咱们界说依赖于运用程序的数据目标,这些目标能够将不同类型的单个变量彼此相关,这就产生了一种有用的数据处理办法;称为数据结构的专用结构可用于各种运用,例如两个嵌入式体系之间的音讯传递以及将从传感器搜集的数据存储在非接连存储器方位中;当咱们需求拜访内存映射微控制器外围设备的寄存器时,结构是有用的;咱们能够经过重新排列结构中成员的次序来进步内存运用功率。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/98493.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部