欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 初学MCU >> 单片机语言 >> 文章正文

第十七课 C51结构、联合和枚举的使用

前面的文章中介绍了 C 语言的基本数据类型,为了更有效的处理更复杂的数据,C 语 言引入了构造类型的数据类型。构造类型就是将一批各种类型的数据放在一起形成一种特殊 类型的数据。之前讨论过的数组也算是一种构造类型的数据,单片机c语言 中的构造类型还有结构、 枚举和联合。

结构

结构是一种数据的集合体,它能按需要将不一样类型的变量组合在一起,整个集合体用 一个结构变量名表示,组成这个集合体的各个变量称为结构成员。理解结构的概念,能用 班级和学生的关系去理解。班级名称就相当于结构变量名,它代表所有同学的集合,而每个 同学就是这个结构中的成员。使用结构变量时,要先定义结构类型。一般定义格式如下:

struct 结构名 {结构元素表};

例子:struct FileInfo

{

unsigned char FileName[4]; unsigned long Date; unsigned int Size;

}

上面的例子中定义了一个简单的文件信息结构类型,它可用于定义用于简单的mcu文 件信息,结构中有三个元素,分别用于操作文件名、日期、大小。因为结构中的每个数据成 员能使用不一样的数据类型,所以要对每个数据成员进行数据类型定义。定义好一个结构类 型后,能按下面的格式进行定义结构变量,要注意的是只有结构变量才能参与程序的执 行,结构类型只是用于说明结构变量是属于那一种结构。

struct 结构名 结构变量名 1,结构变量名 2……结构变量 N; 例子:struct FileInfo NewFileInfo, OleFileInfo;

通过上面的定义 NewFileInfo 和 OleFileInfo 都是 FileInfo 结构,都具有一个字符型数组 一个长整型和一个整形数据。定义结构类型只是给出了这个结构的组织形式,它不会占用存 储空间,也就说结构名是不能进行赋值和运算等操作的。结构变量则是结构中的具体成员, 会占用空间,能对每个成员进行操作。

结构是允许嵌套的,也就是说在定义结构类型时,结构的元素能由另一个结构构成。 如:

struct clock

{

unsigned char sec, min, hour;

}

struct date

{

unsigned int year;

unsigned char month, day;

struct clock Time; //这是结构嵌套 mcuway.com

}

struct date NowDate; //定义 data 结构变量名为 NowDate


开始学习的朋友看到这可能会发问:“各个数据元素要如何引用、赋值呢?”使用结构变量 时是通过对它的结构元素的引用来实现的。引用的方法是使用存取结构元素成员运算符“.” 来连接结构名和元素名,格式如下:

结构变量名.结构元素

要存取上例结构变量中的月份时,就要写成 NowDate..year。而嵌套的结构,在引用元 素时就要使用多个成员运算符,一级一级连接到最低级的结构元素。要注意的是在 单片机c语言 中 只能对最低级的结构元素进行访问,而不可能对整个结构进行操作。操作例子:

NowDate.year = 2005;

NowDate.month = OleMonth+ 2; //月份数据在旧的基础上加 2

NowDate.Time.min++; //分针加 1,嵌套时只能引用最低一级元素 一个结构变量中元素的名字能和程序中其他地方使用的变量同名,因为元素是属于它所在 的结构中,使用时要用成员运算符指定。

结构类型的定义还能有如下的两种格式。

struct

{

结构元素表

} 结构变量名 1,结构变量名 2……结构变量名 N;

例:struct

{

unsigned char FileName[4]; unsigned long Date; unsigned int Size;

} NewFileInfo, OleFileInfo;

这一种定义方式定义没有使用结构名,称为无名结构。通常会用于程序中只有几个确定 的结构变量的场合,不能在其它结构中嵌套。

另一种定义方式如下:

struct 结构名

{

结构元素表

} 结构变量名 1,结构变量名 2……结构变量名 N;

[1] [2] 下一页

普通文章28课:单片机音乐汇编程序设计
普通文章27课:单片机的一些基本概念
普通文章26课:单片机矩阵式键盘接口技术
普通文章c51单片机c语言教程介绍
普通文章第一课 建立你的第一个KeilC51项目
普通文章第二课 HEX文件的生成和MCU最小系统
普通文章第三课 C51语言的数据类型
普通文章第四课 C51常量
普通文章第五课 C51变量
普通文章第六课 C51运算符和表达式
普通文章第七课 运算符和表达式(关系运算符)
普通文章第八课 运算符和表达式(位运算符)
普通文章第九课 C51运算符和表达式(指针和地址
普通文章第十课 C51表达式语句及仿真器
普通文章第十一课 C51复合语句和条件语句
普通文章第十二课 C51开关分支语句
普通文章第十三课 C51循环语句
普通文章第十四课 C51函数
普通文章第十五课 C51数组的使用
普通文章第十六课 C51指针的使用
普通文章第十七课 C51结构、联合和枚举的使用
普通文章附录-运算符优先级和结合性等
普通文章单片机之路教你学会使用Keil软件
普通文章单片机之路教你学会使用Keil软件(续
普通文章单片机之路教你学会使用Keil软件(续

  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电流单位
    普通文章功率单位
    普通文章什么是达林顿管?
    普通文章晶闸管的作用与原理

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com