0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式中C语言结构体基本实现

嵌入式开发星球 来源:嵌入式开发爱好者 作者:嵌入式开发爱好者 2024-05-11 08:49 次阅读

C语言中的数组只能允许程序员定义存储相同类型数据。但是结构是C语言编程中允许您存储不同数据类型的数据。

wKgZomY_FOKAdlRXAADOabNodfI522.jpg

结构体的定义

要想定义结构,必须用到struct关键字,struct的语句格式:

wKgaomY_FOiALrYrAAAPXyHjpxk889.jpg

在struct 中声明了一个含有若干新成员的数据类型。

tag是结构体标签

member-list是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。

variable-list结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。下面是声明 Book 结构的方式:

wKgZomY_FOiAfPaqAAAT6caiYp8080.jpg

在一般情况下,tag、member-list、variable-list这 3 部分至少要出现 2 个。以下为实例:

wKgaomY_FOmAekIyAACIvyeggCs534.jpg

在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令 t3=&s1,则是非法的。

结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。

wKgZomY_FOmAYH6yAAAtJVnHt0Y154.jpg

如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明,如下所示:

wKgZomY_FOyAUffYAAA5aiH_fMg223.jpg

结构体变量的初始化

和其它类型变量一样,对结构体变量可以在定义时指定初始值。

wKgaomY_FOyAalcjAAA_n5-kiY0451.jpg

执行输出结果为:

title : C 语言
author: RUNOOB
subject: 编程语言
book_id: 123456

访问结构成员

为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。您可以使用struct关键字来定义结构类型的变量。下面的实例演示了结构的用法:

wKgZomY_FOyAGrojAAAcjAAmW94049.jpgwKgaomY_FO2AFMbvAAC6WbZNRz8457.jpg

当上面的代码被编译和执行时,它会产生下列结果:

wKgZomY_FO2AHO68AAAu7Tm_Vbg149.jpg

结构作为函数参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。您可以使用上面实例中的方式来访问结构变量:

wKgaomY_FO2AUiGyAAAdG2Bd2d8249.jpgwKgaomY_FPOAH43wAACzal763FE391.jpg

当上面的代码被编译和执行时,它会产生下列结果:

wKgZomY_FPSAZGtKAAAtbFQ5RBg055.jpg

指向结构的指针

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:

struct Books *struct_pointer;

现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:

struct_pointer = &Book1;

为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:

struct_pointer->title;

让我们使用结构指针来重写上面的实例,这将有助于您理解结构指针的概念:

wKgaomY_FPSABoc6AAAejj4DcbA748.jpgwKgaomY_FPSAXiPGAAC-Cvk_3ao770.jpg

当上面的代码被编译和执行时,它会产生下列结果:

wKgZomY_FPWAA3ApAAAsr1-IM7c326.jpg

审核编辑 黄宇

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

    关注

    5068

    文章

    19008

    浏览量

    302900
  • 存储
    +关注

    关注

    13

    文章

    4256

    浏览量

    85644
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136110
收藏 人收藏

    评论

    相关推荐

    C语言结构对齐介绍

    大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是C语言结构对齐介绍,希望能对你
    发表于 07-11 11:50 2420次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>结构</b><b class='flag-5'>体</b>对齐介绍

    嵌入式C语言程序设计基础大汇总

      学习嵌入式的基础语言C语言,因此先掌握C语言对于后续
    发表于 11-09 07:13

    嵌入式c语言编程(由浅入深)

    本内容详细介绍了嵌入式c语言编程的各项知识,包括嵌入式c语言编程,
    发表于 11-02 14:37 0次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>c</b><b class='flag-5'>语言</b>编程(由浅入深)

    嵌入式C语言结构设计_实验二

    主要介绍嵌入式C语言结构设计,从基础讲起,非常合适入门
    发表于 02-22 15:45 2次下载

    嵌入式C_C++语言精华

    介绍了在嵌入式开发的过程c语言C++语言的施用技巧。
    发表于 03-17 09:54 2次下载

    嵌入式外中断c语言代码

    嵌入式外中断c语言代码(arm嵌入式开发实例)-嵌入式外中断c
    发表于 07-30 11:29 4次下载
    <b class='flag-5'>嵌入式</b>外中断<b class='flag-5'>c</b><b class='flag-5'>语言</b>代码

    嵌入式C语言-文件操用

    嵌入式C语言-文件操用(嵌入式开发需要什么证书)-嵌入式C
    发表于 07-30 11:56 15次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>-文件操用

    嵌入式底层开发为什么选择C语言

    嵌入式底层开发为什么选择C语言嵌入式系统的编写语言主要是C
    发表于 10-20 13:35 2次下载
    <b class='flag-5'>嵌入式</b>底层开发为什么选择<b class='flag-5'>C</b><b class='flag-5'>语言</b>

    标准c语言嵌入式,嵌入式C语言C语言的区别

    嵌入式C语言C语言的区别:最常用的系统编程语言C
    发表于 10-20 14:06 6次下载
    标准<b class='flag-5'>c</b><b class='flag-5'>语言</b>与<b class='flag-5'>嵌入式</b>,<b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>与<b class='flag-5'>C</b><b class='flag-5'>语言</b>的区别

    C语言嵌入式培训 嵌入式C语言程序设计基础

      学习嵌入式的基础语言C语言,因此先掌握C语言对于后续
    发表于 11-03 21:06 32次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>嵌入式</b>培训  <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>程序设计基础

    嵌入式C语言知识总结

    1 嵌入式C语言总结从语法上来说C语言并不复杂, 但编写优质可靠的嵌入式
    发表于 12-20 19:44 12次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>知识总结

    嵌入式C语言结构封装函数详解

    嵌入式系统结构封装函数可以用于对于嵌入式硬件资源进行抽象和封装,从而提高软件的可维护性和可移植性。
    的头像 发表于 04-14 11:50 1462次阅读

    嵌入式C语言结构封装函数说明

    嵌入式系统结构封装函数可以用于对于嵌入式硬件资源进行抽象和封装,从而提高软件的可维护性和可移植性。
    发表于 05-20 15:00 1037次阅读

    嵌入式C语言结构特点

    ,不论是基于寄存器开发还是基于库开发,深入理解和掌握嵌入式C语言的函数、指针、结构是学习STM32的关键。
    的头像 发表于 11-24 16:16 637次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>的<b class='flag-5'>结构</b>特点

    嵌入式系统C语言结构的基础实现与应用

    C语言中的数组只能允许程序员定义存储相同类型数据。但是结构C语言编程中允许您存储不同数据类型的数据。
    发表于 03-12 14:29 430次阅读
    <b class='flag-5'>嵌入式</b>系统<b class='flag-5'>中</b><b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>结构</b><b class='flag-5'>体</b>的基础<b class='flag-5'>实现</b>与应用