收藏 分享(赏)

21天学通51单片机第8章.ppt

上传人:精品资料 文档编号:10939837 上传时间:2020-01-22 格式:PPT 页数:27 大小:203.50KB
下载 相关 举报
21天学通51单片机第8章.ppt_第1页
第1页 / 共27页
21天学通51单片机第8章.ppt_第2页
第2页 / 共27页
21天学通51单片机第8章.ppt_第3页
第3页 / 共27页
21天学通51单片机第8章.ppt_第4页
第4页 / 共27页
21天学通51单片机第8章.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、21天学51单片机开发,第八讲:C51的结构,课程安排,结构的声明 结构变量的初始化 结构变量的使用 结构数组 结构指针 嵌套结构 位结构,结构的声明,形象地说,结构就是用户定义的,不同数据类型的一个集合体。 结构在日常生活中有着广泛的用途。 在使用结构时,需要首先定义结构类型,并声明该结构类型的结构变量 。,定义结构,结构其实就是一种用户自定义的复合数据类型。 在C51语言中,结构的一般定义形式如下:,struct 结构名 类型说明符 成员名; 类型说明符 成员名; ;,使用结构的注意事项,在C51语言中使用结构,应该注意如下几点: 结构定义的最后一定要加上分号“;”。 结构是一种复合构造类

2、型,是由数目固定、类型不同的若干有序成员集合而成的数据类。 结构中的每一个成员可以是一个基本数据类型,甚至可以是一个构造类型。 结构在说明和使用之前必须先定义。 结构是以变量名来访问结构成员的。,声明结构变量,结构只是一类复合数据类型的统称,在程序中使用时是以结构变量的形式来使用的。在程序中应该先定义结构,然后使用该结构来声明一个结构变量。 C51语言中提供了灵活的结构变量的声明方法: 先定义结构,再声明结构变量 定义结构时声明结构变量 直接声明结构变量,先定义结构,再声明结构变量,这种方法完全符合结构和结构变量的逻辑顺序 。 可以同时声明多个结构变量 。,struct student cha

3、r name20; int num; int age; char sex2; float score; ; struct student zhang,wang;,定义结构时声明结构变量,在C51语言中,允许在定义结构的时候同时声明结构变量。 在定义结构的同时可以声明多个结构变量。,struct 结构名 类型说明符 成员名; 类型说明符 成员名; 结构变量;,直接声明结构变量,在C51语言中,可以直接说明结构变量,而不显式地说明结构名称。,struct char name20; int num; int age; char sex2; float score; Alice,Bob;,注意:直接声

4、明结构变量的方法不能再额外声明其他的结构变量。,结构变量的初始化,在C51语言中,结构变量的初始化可以采用两种方法。 一种是声明初始化,既在声明的同时进行初始化。 另一种是动态初始化,既在程序中指定初始化值。 声明初始化的一般形式如下:,struct 结构名 类型说明符 变量名; 类型说明符 变量名; 结构变量=值,值,;,结构变量的使用,在C51语言中,表示结构变量成员的一般形式如下: 结构变量名.成员名 在C51语言中允许对结构变量中的成员进行赋值、修改等操作。 也允许具有相同类型的结构变量之间相互赋值。 在C51语言中,允许多重结构或者多重结构变量。 多重结构需逐级找到最低级的成员才能引

5、用。,结构数组,结构数组常来表示具有相同数据结构的一个群体,是指数组中的每一个元素都是具有相同结构类型的结构变量。 在C51语言中,结构数组的声明可以通过三种方法来实现 : 先定义结构再声明结构数组 定义结构时声明结构数组 直接声明结构数组,先定义结构再声明结构数组,先定义结构再声明结构数组的示例如下:,struct student /定义结构 char *name; /姓名 int num; /学号 int age; /年龄 char *sex; /性别 float score; /分数 ; struct student boy50; /声明结构数组,定义结构时声明结构数组,定义结构时声明结

6、构数组的示例如下:,struct student /定义结构 char *name; /姓名 int num; /学号 int age; /年龄 char *sex; /性别 float score; /分数 boy50; /声明结构数组,直接声明结构数组,直接声明结构数组的示例如下:,struct /定义结构 char *name; /姓名 int num; /学号 int age; /年龄 char *sex; /性别 float score; /分数 boy50; /声明结构数组,初始化结构数组,初始化结构数组也可以采用声明初始化和动态初始化两种方法。 典型的声明初始化结构数组示例如下:

7、,struct student /定义结构 char *name; /姓名 int num; /学号 int age; /年龄 char *sex; /性别 float score; /分数 boy5= /声明并初始化结构数组 “Alice“,100,24,“F“,90.5, “Bob“,101,24,“ M “,90.0, “Jack“,102,25,“ M “,88.5, “Twis“,103,23,“ M “,78.5, “Bohm“,104,21,“ M “,82.5;,结构指针,C51种可以用结构来声明指针,也就是结构指针。 结构指针是指该指针变量用来指向一个结构变量。 在C51中,

8、通过结构指针可以访问该结构变量。 在C51语言中,结构指针的声明方法可以通过三种方法来实现 : 先定义结构再声明结构指针 定义结构时声明结构指针 直接声明结构指针,先定义结构再声明结构指针,先定义结构再声明结构指针的示例如下:,struct student /定义结构 char *name; /姓名 int num; /学号 int age; /年龄 char *sex; /性别 float score; /分数 ; struct student *pstu; /声明结构指针,定义结构时声明结构数组,定义结构时声明结构数组的示例如下:,struct student /定义结构 char *na

9、me; /姓名 int num; /学号 int age; /年龄 char *sex; /性别 float score; /分数 *pstu; /声明结构指针,直接声明结构数组,直接声明结构数组的示例如下:,struct /定义结构 char *name; /姓名 int num; /学号 int age; /年龄 char *sex; /性别 float score; /分数 *pstu; /声明结构指针,使用结构指针,结构指针变量必须要先赋值后才能在程序中使用。 结构指针变量的赋值操作是把结构变量的首地址赋予该结构指针变量。 访问结构变量的各个成员的一般形式如下: (*结构指针变量).

10、成员名 结构指针变量-成员名,一些注意事项,在C51语言中,如下的三种用于结构成员的表示形式是完全等效的 : 结构变量.成员名 (*结构指针变量).成员名 结构指针变量-成员名 初学者容易混淆的两个概念是结构名和结构变量 。 结构名只能表示一个结构形式,编译系统并不对它分配内存空间。 结构变量是被声明为某种类型的结构的变量,编译程序可以对该变量分配存储空间。,指向结构数组的结构指针,将结构指针变量指向一个结构数组,可以通过结构指针变量来对该结构数组进行操作。 此时,结构指针变量的值是整个结构数组的首地址。 另外,结构指针变量也可指向结构数组的一个元素,这时结构指针变量的值是该结构数组元素的首地

11、址。,嵌套结构,嵌套结构其实就是多重结构,是指在一个结构成员中可以包括其他一个结构。 嵌套结构的成员名的引用,是从最外层直到最内层逐个被列出的。 典型的嵌套式结构成员表示方式如下: 结构变量名.嵌套结构变量名.结构成员名,位结构,位结构是C51语言中的特殊结构形式,其提供了位访问能力。 通过位结构,可以访问一个字节或字的多个位。 这样可以有效的介绍代码体积,提高程序的效率。 位结构定义的一般形式如下:,struct位结构名 数据类型 变量名: 整型常数; 数据类型 变量名: 整型常数; 位结构变量;,位结构,在使用位结构时,应注意以下几点。 位结构中的成员必须是int,但可以定义为unsigned或者signed。 当位结构成员长度为1时,C51语言将其认为是unsigned类型。 位结构总长度(位数)是各个位成员定义的位数之和,可以超过两个字节。 位结构中的成员不能使用数组和指针,但位结构变量可以是数组和指针。如果是指针,其成员访问方式同结构指针。,性格决定命运, 专注成就人生, 源智天下,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报