嵌入式C编程02结构联合枚举_第1页
嵌入式C编程02结构联合枚举_第2页
嵌入式C编程02结构联合枚举_第3页
嵌入式C编程02结构联合枚举_第4页
嵌入式C编程02结构联合枚举_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

结构联合枚举嵌入式C编程02结构联合枚举共25页,您现在浏览的是第1页!课程安排结构体组合数据类型联合体组合据类型枚举组合据类型嵌入式C编程02结构联合枚举共25页,您现在浏览的是第2页!数组组合了相同类型的数据那么对于不同类型的数据,如何组合?如何把学生的所有信息组合在一起:姓名、生日、学号、电话号码、地址、成绩。。。

不同类型数据组合嵌入式C编程02结构联合枚举共25页,您现在浏览的是第3页!使用结构嵌入式C编程02结构联合枚举共25页,您现在浏览的是第4页!先定义结构体类型,再定义结构体变量

struct_datedate;

struct_stu_infostu;可以通过typedef来简化: 1、typedefstuct_stu_info_tstu_info_t; 2、结构体变量定义嵌入式C编程02结构联合枚举共25页,您现在浏览的是第5页!结构体变量初始化结构体变量赋值

1、

2、

3、

结构体变量使用嵌入式C编程02结构联合枚举共25页,您现在浏览的是第6页!数组变量为结构体类型结构体数组嵌入式C编程02结构联合枚举共25页,您现在浏览的是第7页!GCC扩展语法指定域赋值:Linux内核大量使用

结构体扩展语法

structstudent{intnum;charname[20];charsex;intage;charaddr[30];};structstudentstu={age:20,num:12,sex:12};嵌入式C编程02结构联合枚举共25页,您现在浏览的是第8页!下面两种组合结构类型内存分配有什么不同?

sizeof(sdate_t)=?sizeof(udate_t)=?联合体概念嵌入式C编程02结构联合枚举共25页,您现在浏览的是第9页!联合体与结构体一样只能引用变量的域成员

任一成员改变会影响到其他成员任一时刻只能使用其中一个成员

联合体变量嵌入式C编程02结构联合枚举共25页,您现在浏览的是第10页!

联合体应用嵌入式C编程02结构联合枚举共25页,您现在浏览的是第11页!在实际问题中,有些量的取值被限定在一个有限的范围内一个星期内只有七天一年只有十二个月嵌入式预科班有2门课程(C、Linux)一个班最多只能有30个学生如何为这些量定义类型?

字符型或其它类型显然不妥当

枚举的概念嵌入式C编程02结构联合枚举共25页,您现在浏览的是第12页!枚举类型定义的一般形式为:

enum枚举名

{

枚举值表//枚举值为常量};也可以用typedef自定义类型

typedefenum{

枚举值表}枚举类型;

枚举的定义嵌入式C编程02结构联合枚举共25页,您现在浏览的是第13页!指定值 可以选择常量具有的整数值,后面的常量会被赋予后续的值

枚举的使用问题:1、如何用枚举定义性别?2、如何用枚举表示10以内的偶数集合?嵌入式C编程02结构联合枚举共25页,您现在浏览的是第14页!结构体类型定义struct

[结构体名]{

类型标识符成员名;类型标识符成员名;

…………….};成员类型可以是基本型或构造型。可以任意多成员struct是关键字,不能省略合法标识符可省:无名结构体分号表明struct定义结束嵌入式C编程02结构联合枚举共25页,您现在浏览的是第15页!需要为结构体变量各个域分配内存,各域内存之间连续分布

printf(“%p\n”,&stu);?printf(“%p\n”,&);?

printf(“%p\n”,&stu.date);?

printf(“%p\n”,&stu.date.year);?

printf(“%p\n”,&stu.phone);?

printf(“%p\n”,&stu.id);?变量内存大小=各域需要内存之和

sizeof(stu)=?结构体变量内存分布嵌入式C编程02结构联合枚举共25页,您现在浏览的是第16页!结构体变量引用:结构体变量不能整体引用结构体变量比较:结构体变量不能直接用==进行比较结构体变量使用嵌入式C编程02结构联合枚举共25页,您现在浏览的是第17页!C99标准编译器支持指定域赋值

结构体扩展语法

structstudent{ intnum;charname[20];charsex;intage;charaddr[30];};structstudentstu={.age=20,.num=12,.sex=12};嵌入式C编程02结构联合枚举共25页,您现在浏览的是第18页!课程安排结构体组合数据类型联合体组合据类型枚举组合据类型嵌入式C编程02结构联合枚举共25页,您现在浏览的是第19页!union联合体数据类型不同类型的变量共占一段内存(相互覆盖)占用空间取决于占最大空间的成员。

联合体定义union

联合体名{

类型标识符成员名;类型标识符成员名;

…………….};typedeunion

{

类型标识符成员名;类型标识符成员名;

…………….}联合体类型;嵌入式C编程02结构联合枚举共25页,您现在浏览的是第20页!相同性质的数据中存在不同类型的表示:

数值有整型数、字符型数、浮点型数学生有Linux班学生、Android班学生,(学习科目不同)

联合体应用嵌入式C编程02结构联合枚举共25页,您现在浏览的是第21页!课程安排结构体组合数据类型联合体组合据类型枚举组合据类型嵌入式C编程02结构联合枚举共25页,您现在浏览的是第22页!C语言提供了一种称为“枚举”的类型在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。

枚举的概念嵌入式C编程02结构联合枚举共25页,您现在浏览的是第23页!枚举常量 枚举常量是int型的常量,在使用int类型的任何地址都可以使用它

week_tweek=SUN_DAY;printf(“weekis%d\n”,); printf(“sizeof(week_t)is%d\n”,sizeof(week_t));?默认值没有特定指出常量值时,枚举列表中的常量被指定为整数值0、1、2等,依次递增枚举的使用嵌入式C编程02结构联合枚举共25页,您现在浏览的是第24页!上机实验1、需要记录的学生信息为:姓名、年龄、学号、性别、成绩。定义结构体类型,表示学生信息。定义变量并初始化,求变量的内存大小。2、Linux开发班课程为:ARM、C、Linux;而Android开发班课程为Java、Android。定义联合体类型,表示这2种班别各

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论