网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2024-05-11 08:49

人气:

作者:admin

标签:

导读:C语言中的数组只能允许程序员定义存储相同类型数据。但是结构是C语言编程中允许您存储不同数据类型的数据。 结构体的定义     要想定义结构,必须用到 struct 关键字,struct的语句...

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

审核编辑 黄宇

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信