- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章结构体共用体
第8章 结构体、共用体与枚举类型 结构体 共用体 位段结构 枚举类型 用typedef定义类型 结构体应用举例 8.1 结构体 一、结构体类型的定义 结构体是一种构造数据类型,用于把不同类型的数据组合成一个整体------ 自定义数据类型 结构体类型的定义: 结构体类型还可以嵌套定义,但这种嵌套不能包含自身,既不能由自己定义 二、结构体类型变量 结构体类型变量的定义 先定义结构体类型,再定义结构体变量 注意: 结构体类型与结构体变量是不同的概念; 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构体变量中的成员,可以单独使用,它的作用与地位相当于普通变量; 结构体成员名与程序中变量名可重名,两者不代表同一对象,不会混淆; 结构体变量在内存中占有一段连续的内存空间,并按照成员定义的顺序有序存储它的各个成员,且每个成员所占有的空间由其自身的类型决定。 2. 结构体类型变量的引用 在ANSI C中除了允许具有相同类型的结构变量相互赋值以外,一般结构体变量的使用,包括赋值、输入、输出、运算等都是通过结构体变量的成员来实现的。 3. 结构体类型变量的初始化 在初始化时,按照所定义的结构体类型的数据结构,依次写出各初始值,在编译时就将它们赋给此变量中各成员;对应结构体变量定义的三种形式均可进行初始化 如果一个结构体类型内又嵌套另一个结构体类型,则初始化时仍然是对各个基本类型的成员赋值 4. 结构体变量的输入与输出 C语言不允许把一个结构体变量作为一个整体进行输入或输出 ,而应该按各成员变量进行输入输出 ,且各成员在被存储和被引用时与相应类型的普通变量相同 三、 结构体类型数组 结构体数组的每一个元素都是具有相同类型的结构体变量 1. 结构体类型数组的定义 先定义结构体类型,再定义结构体数组 定义结构体类型的同时定义结构体数组 直接定义结构体类型数组 2. 结构体数组的初始化 对结构体数组初始化时可以分行赋值或顺序赋值 当所赋初值的数据组的个数和数组元素个数相等时,数组元素个数可以省略不写,少于则要保留数组元素个数 当不完全赋值时,系统自动对未赋值的元素或元素的成员赋零值 3. 结构体数组的引用 结构体数组中每个元素相当于一个结构体变量,则对数组中某个元素的成员的用方法为: 结构体数组名[元素下标]. 结构体成员名 说明: 结构体数组元素可以赋给同一结构体数组中的另一个元素或同一类型的其它变量; 不能把结构体数组元素作为一个整体直接输入输出,必须以单个成员为对象进行输入输出。 四、结构体类型指针 一个结构体变量在内存中占有一段连续的内存空间,当用一个指针变量指向某个结构体变量时,该指针变量称为结构体指针变量;它的值是其所指向的结构体变量的首地址 。 例8.4 结构体类型指针举例 #includestdio.h struct st { int num; char *name; char sex; float score; } st1 = { 10004, Zhang Ying, F, 88.5}, *p1; main() { p1=st1; printf( Number=%d\nName=%s\n, st1.num, st1.name); printf( Sex=%c\nScore=%f\n\n, st1.sex, st1.score); printf( Number=%d\nName=%s\n, (*p1).num, (*p1).name); printf( Sex=%c\nScore=%f\n\n, (*p1).sex, (*p1).score); printf( Number=%d\nName=%s\n, p1-num, p1-name); printf( Sex=%c\nScore=%f\n\n, p1-sex, p1-score); } 2. 指向结构体数组的指针 结构体指针变量可以指向一个结构体数组,也可指向结构体数组的一个元素,但不可指向结构体变量的成员 。 五、结构体与函数 用结构体变量作为函数参数 用结构体变量的成员作参数,这和普通变量作参数相同;形参和实参都是结构体变量则要求实参和形参类型相同;上述两种情况都是值传递方式。 main() { void func( struct data parm ); struct data arg; arg.a = 10; arg.b = 20; arg.c = arg.a + arg.b; func( arg )
文档评论(0)