结构体

上传人:206****923 文档编号:51643542 上传时间:2018-08-15 格式:PPT 页数:25 大小:83KB
返回 下载 相关 举报
结构体_第1页
第1页 / 共25页
结构体_第2页
第2页 / 共25页
结构体_第3页
第3页 / 共25页
结构体_第4页
第4页 / 共25页
结构体_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《结构体》由会员分享,可在线阅读,更多相关《结构体(25页珍藏版)》请在金锄头文库上搜索。

1、结 构 体l结构体l结构体数组l指向结构体的指针l定义类型别名2 2C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体 (Structure)l结构体概述l结构体类型的声明l结构体变量的定义l结构体变量的初始化l结构体变量的引用3 3C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体概述l结构体n将不同类型的数据组合成一个整体n用来表示简单类型无法描述的复杂对象n可以用结构体来定义用户自己的数据结构l举例n描述学生信息numnamesexagescoreaddr12039Bill GatesM4076.5New York4 4C C语言程序设计语

2、言程序设计 - - 第第8 8章章 结构体结构体结构体类型的声明l一般形式nstruct 结构体名 成员表列;n“成员表列”形式类型 成员名;类型 成员名;. .5 5C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型声明的说明 (1)l声明了一种类型,而不是定义变量l结构体名可以没有,但是这样就无法再 次使用该结构体类型了l成员表列中是成员(Member)的定义l成员的定义形式与变量定义相同l成员类型可以是另一结构体类型,但不 可直接或间接递归嵌套l成员表列不可为空,至少要有一个成员6 6C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类

3、型声明的说明 (2)l注意不表示复合语句,其后有分号l同一结构体的成员不能重名l不同结构体的成员可以重名l结构体成员和其他变量可以重名l结构体类型与其成员或其他变量可重名nstruct test int test; test;l结构体类型名称是struct 结构体名, 注意struct关键字不能省略7 7C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型声明的说明 (3)l即使两个结构体声明中的成员类型、名 称、顺序都完全一致,它们也是不同的 类型l结构体类型也要“先声明,后使用”l如果结构体类型声明在函数内部,则该 函数之外无法引用此结构体类型l一般把结构体类型声

4、明放到文件最前面l也可以把结构体类型声明放在头文件里8 8C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体类型的声明举例struct student unsigned num; /* 学号 */char name20; /* 姓名 */char sex; /* 性别 */unsigned age; /* 年龄 */float score; /* 分数 */char addr50; /* 地址 */;9 9C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量的定义 (1)l先声明结构体类型再定义变量struct student unsigned

5、 num;char name20;char sex;unsigned age;float score;char addr50; ; struct student stu1, stu2;1010C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量的定义 (2)l在声明结构体类型的同时定义变量struct student unsigned num;char name20;char sex;unsigned age;float score;char addr50; stu1, stu2;1111C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量的

6、定义 (3)l直接定义无名结构类型变量struct unsigned num;char name20;char sex;unsigned age;float score;char addr50; stu1, stu2;1212C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体声明和变量定义举例struct date int year, month, day;struct studentunsigned num;char name20;char sex;struct date birthday;float score; stu1, stu2;1313C C语言程序设计语言

7、程序设计 - - 第第8 8章章 结构体结构体结构体变量的初始化l按照成员的顺序和类型对成员初始化struct date date1 = 1984, 10, 20; struct student stu = 1001, /*unsigned num*/“Tom“, /*char name20*/M, /*char sex*/1983, 9, 20,/*struct date birthday*/93.5 /*float score*/ ;1414C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量中成员的引用l一般形式n结构体变量名.成员名l成员运算符 .n具有最高的

8、优先级,自左向右结合l说明n结构体成员和同类型的变量用法相同n若成员类型又是一个结构体,则可以使用若 干个成员运算符,访问最低一级的成员1515C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量中成员的引用举例struct student stu; . . scanf(“%f“, stu.num = 12345; stu.birthday.month = 11; stu.score = sqrt(stu.score) * 10; strcpy(stu.name, “Mike“);printf(“No.%d:“, stu.num);1616C C语言程序设计语言程序设

9、计 - - 第第8 8章章 结构体结构体结构体变量整体引用l结构体类型变量之间可以直接相互赋值n实质上是两个结构体变量相应的存储空间中 的所有数据直接拷贝n包括复杂类型在内的所有结构体成员都被直 接赋值,如字符串、结构体类型等l函数的实参和形参可以是结构体类型, 并且遵循实参到形参的单向值传递规则l为了提高程序的效率,函数的参数多使 用结构体类型指针1717C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体变量整体引用举例struct student stu1, stu2=1002, “Kate“, F,1981, 11, 4, 89.0; void print(str

10、uct student s) printf(“%d,%4s,%c,%d.%02d.%02d,%4.1fn“,s.num, s.name, s.sex, s.birthday.year,s.birthday.month, s.birthday.day, s.score); void main () stu1 = stu2; /* 直接赋值 */print(stu1); /* 1002,Kate,F,1981.11.04,89.0 */ 1818C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体数组l结构体数组的用法与基本类型数组类似n定义、初始化、引用等l结构体数组可用于

11、表示二维表格l举例struct student s10; for (i=0; i)引用指针所指向的 结构体的成员l指向运算符 -n结构体指针-成员名n具有最高的优先级,自左向右结合n若struct student stu, *p= 则stu.num、(*p).num、p-num等效2222C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体指向结构体数组的指针l指向结构体数组的指针n与指向其他基本类型数组的指针用法类似n注意相关运算符的结合方向和优先级l举例struct student stu10, p=stu; +p-num; /* 同+(p-num); */ p+-num;

12、 /* 同(p+)-num; */ (+p)-num; (p+)-num;2323C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体结构体指针作函数参数举例void input(struct student *p) scanf(“%d %s %c %d.%d.%d %f“, void main () struct student stu20;int i;for (i=0; il举例ntypedef float REAL; ntypedef struct int month;int day;int year; DATE;2525C C语言程序设计语言程序设计 - - 第第8 8章章 结构体结构体

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号