- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 结构和联合 8.1 结构的定义以及结构变量的定义和使用 8.2 结构数组与结构指针 8.3 结构在函数间的传递 8.8 综合举例 8.1 结构的定义以及结构变量的定义和使用 8.1.1 结构的定义 结构是由不同数据类型的数据组成的。组成结构的每个数据称为该结 构的成员项,简称成员。在程序中使用结构时,首先要对结构的组成进 行描述,这称为结构的定义。结构定义的一般形式如下: struct 结构名 { 数据类型 成员名1; 数据类型 成员名2; ........... 数据类型 成员名n; }; 例如,为了处理雇员的数据,在程序中可以定义如下的结构: struct Employee { char name[20]; char sex; int old; int wage; }; 该结构名字是Employee,它由四个成员项组成。 第一个成员项是字符型数据name[ ],它用于保存姓名字符串; 第二个成员项是字符型数据sex,它用于保存性别字符; 第三个成员项是int型整数old,它用于保存年龄数据; 最后一个成员项是int型整数wage,它用于工资数据。 (1) 结构的定义以关键字struct作为标识符,其后是定义的 结构名,它们两者形成了特定结构的类型标识符。结构名由 用户命名,命名原则与变量名等相同。结构名是这一组数据 集合体的名字,可以像基本数据类型名一样,用来说明具体 的结构变量。 (2) 在结构名下面的一对大括号中包围的是组成该结构的各 个成员项。每个成员项由其数据类型和成员名组成。每个成 员项后用分号“;”作为结束符。整个结构的定义也用分号作 为结束符,注意不要忘记这个分号。 (3)结构的定义明确地描述了该结构的组织形式。在程序执行时,结构的 定义并不引起系统为该结构分配内存空间。结构的定义仅仅是定义了一 种特定的数据构造类型,它指定了这种构造使用内存的模式。在定义时 没有指明使用这种构造具体对象(在结构的说明时将指明这点)。如上 述结构Employee的定义,仅仅指定了在使用这种结构时应该按下图所示 的配置情况占用内存,但这时并没有实际占用内存空间。 8.1.2 结构变量的定义 程序一旦定义了一个结构体,就相当于定义了一个新的 结构类型,那么就可以把结构名当作像int、double等关键 字一样使用,用说明语句定义该形式结构体的具体结构变 量,其格式为: 存储类型 struct 结构名 结构变量名; 结构变量的定义在程序的数据说明部分给出。例如,下 列说明: struct Employee wang; 这个说明指出了结构变量wang使用Employee结构,也就是 说,结构变量wang是由前述的Employee的四个成员项组成, 每个成员项的类型和名字都与Employee结构定义中给出的 相同。 (1) 结构变量的定义将引起系统按照结构定义时制定的内存 模式,为被定义的结构变量分配一定的内存空间。例如,上 述结构变量wang在内存中将占据与图8.1所示配置相同的内 存空间。 当多个结构变量使用结构时,它们可以在一起定义。例 如: struct Employee wang, li,zhang; 被定义的三个结构变量wang、li和zhang都具有Employee定 义的结构。 (2)结构变量使用内存空间,所以它们也具有一定的 存储类型。结构变量的存储类型概念、它的寿命、 可见性及使用范围与普通变量、数组完全一致。 (3) 在程序中,结构变量的定义在该结构的定义之 后,对于尚未定义的结构,不能用它对任何结构进 行说明。 (4)在一些简单的程序设计中,结构的定义和结构变量的定 义也可以同时进行,在这种情况下,有时省略结构名。这 时,被定义的结构变量直接在结构定义的大括号}后给出, 例如: struct Employee { char name[20]; char sex; int old; int wage; }wang ,song ,zhou; 这种形式与前面给出的结构定义和结构说明分开进行时功能 相同。 (5)一个结构变量占用内存的实际大小,可以利用 sizeof运算求
文档评论(0)