- 1、本文档共94页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 结构体与共用体 一个公司员工的信息包括工号、姓名、性别、年龄、工资等 特点:(1)各种信息数据类型不同 (2)属于同一个员工,逻辑上有联系 如何描述这些类型不同的相关数据? struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; …… 数据类型 成员名n; }; 例如: struct employee { int num; char name[20]; char sex; int age; float salary; }; 说明: 1)结构体类型的定义是程序的语句,因此一定注意右花括号后面的分号不能丢。 2)结构体中的成员可以是不同的数据类型,它们不是变量,因此成员名可以与程序中其他变量同名;不同结构体中的成员也可以同名。 3)定义了一个结构体类型,只是定义了一种和int,float地位一样的数据类型,而不是变量的定义。 定义好一个结构体类型后,可以将其看作是与int、 char和float等数据类型一样的一个新的数据类型, 其中并无具体数据,系统对之也没有分配实际内存单 元。 为了能在程序中使用结构体类型的数据,应当定义结 构体类型的变量,并在其中存放具体的数据。 7.2 结构体类型变量 7.2.1 结构体类型变量的定义 7.2.2 结构体类型变量的引用 7.2.3 结构体类型变量的初始化 7.2.4 结构体类型变量应用举例 2.声明结构体类型的同时定义结构体变量 struct 结构体名 {数据类型 成员名1; 数据类型 成员名2; …… 数据类型 成员名n; }结构体变量名表列; 3.直接定义结构体类型变量 struct {数据类型 成员名1; 数据类型 成员名2; …… 数据类型 成员名n; }结构体变量名表列; 结构体的成员也可以定义成另一个结构体类型的变量 说明: 类型与变量是不同的概念。 应先定义一个结构体类型,而后再定义结构体变量。 系统对类型不分配空间,仅对变量分配空间。 对结构体变量可以进行赋值、存取或运算,对结构体类型不行。 定义了结构体类型的变量,可以对结构体变量进行各 种操作。 对结构体变量进行操作一般是对结构体成员进行操作。 1.结构体变量成员的引用 结构体变量成员的引用形式:结构体变量名.成员名 例如:a1.salary=1500; 给a1变量中的salary成员赋值 为1500 【例7-1】结构体类型变量的引用示例。 #include string.h void main() { struct employee { int num; char name[20]; char sex; int age; float salary;}; struct employee a1; a1.num=10001; strcpy(a1.name, wangyan); a1.sex=F; a1.age=23; a1.salary=1500; printf(%d,%s,%c,%d,%.1f,a1.num,a1.name,a1.sex,a1.age,a1.salary);} 2.结构体嵌套时逐级引用 如果结构体的成员又是结构体类型,这时就需要用若 干成员运算符,一级一级地找到最低一级的成员。只 能对最低的成员进行各种操作。: a1.num a1.birthday.day 变量a1的birthday成员的 day成员 3.同类型结构体变量间的整体赋值 可以将一个结构体变量作为一个整体,赋给另一个类型 相同的结构体变量。 例如:将a1,a2定义成同一结构体类型的变量,若变量 a1的各个成员已经赋值,则可执行如下语句: a2=a1; 4.对结构体变量的成员可以像普通变量一样进行各种运 算。例如:a1.salary= a1.salary+100; a1.age++; 【例7-2】结构体类型变量的初始化应用。 #include stdio void main() { struct employee /*定义结构体类型employee*/ { int num; char name[20]; char sex; int age; float salary; }a1={10001,liming,f,20,1800}; printf(%d,%s,%c,%d,%
您可能关注的文档
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第十章 第十章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第四章 第四章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第五章 第五章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第一章 第一章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch1.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch2.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch3.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch4.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch5.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch6.ppt
- PDM软件:Siemens Teamcenter二次开发_(17).Teamcenter最佳实践与案例分析.docx
- SCADA软件:GE Proficy二次开发_(4).Proficy开发环境搭建.docx
- 智能电表软件:Landis+Gyr智能电表二次开发_(13).系统集成与测试.docx
- 智能电表软件:Elster智能电表二次开发_(8).Elster智能电表二次开发环境搭建.docx
- PDM软件:Siemens Teamcenter二次开发_(11).TeamcenterAPI与编程基础.docx
- SCADA软件:GE Proficy二次开发_(7).报警与事件管理.docx
- 智能电表软件:Echelon智能电表二次开发_(11).智能电表行业标准与法规.docx
- 智能电表软件:Itron智能电表二次开发_(6).用户界面定制与开发.docx
- 智能电表软件:Elster智能电表二次开发_(9).Elster智能电表二次开发工具使用.docx
- PDM软件:PTC Windchill二次开发_(21).Windchill最佳实践案例分析.docx
文档评论(0)