- 1、本文档共84页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言(第9章_结构)
C语言中的数据类型非常丰富,到目前为止,已介绍过的数据类型有:简单变量、数组和指针。简单变量是一个独立的变量,它同其他变量之间不存在固定的联系;数组则是同一类型数据的组合;指针类型数据主要用于动态存储分配。可以说,它们各有各的用途。 但在实际应用中常常会遇到这样的问题,要求把一些属于不同类型的数据作为一个整体来处理。举一个简单的例子,比如对一个学生的档案管理,需要将每个学生的姓名、年龄、性别、学生证号码、民族、文化程度、家庭住址、家庭电话等类型不同的数据列在一起。虽然这些数据均面向同一个处理对象——学生的属性,但它们却不属于同一类型。 对于这个实际问题,采用以前掌握的数据类型还难以处理这种复杂的数据结构。如果用简单变量来分别代表各个属性,不仅难以反应出它们的内在联系,而且使程序冗长难读。用数组则无法容纳不同类型的元素。于是C语言提供了一种称之为“结构体”类型的数据,它是由一些不同类型的数据组合而成的,见下图。 (1)一个结构体类型通常由两部分组成:第一部分是关键字struct,第二部分称为“结构体名”,由程序设计者按标识符命名规则指定。这二者联合起来组成一个“类型标识符”,即“类型名”。(2)结构体由若干个数据项组成,每一个数据项都是一种已有(或已定义过)的类型,称为某一结构体的成员(或称为“域”)。域与域之间用分号隔开。(3)在结束结构体类型的定义时,不要忘写后花括弧的分号。 “结构体类型”不同于基本数据类型,其特点有:(1)结构体类型中的成员不能认为是已定义的一些普通的数组和变量(如name[20]、age、sex、num等),而是某结构体类型(struct person)的成员名。在程序中,允许另外定义与结构体类型的成员同名的变量,它们代表不同的对象。比如下面的语句在C语言中是合法的。struct person{ … int age; \*成员名*\ char sex; \*成员名*\ …}; int age; \*变量名*\ char sex; \*变量名*\ … (2)结构体类型可以有千千万万种,这是与基本类型不同的。为什么这样说呢?如果程序中定义i为整型变量,那么i必定占2个或4个字节,并按定点形式存放。但如果定义x是结构体类型变量,则它由哪些数据项组成,占多少字节,就要视情况而定了。因此“结构体类型”只是一个抽象的类型,它只表示了“由若干不同类型数据项组成的复合类型”,程序中定义和使用的应该是具体的有确定含义的结构体类型。例如,上面定义的struct person就是一种特定的结构体类型。(3)系统没有预先定义结构体类型,凡需使用结构体类型数据的,都必须在程序中自己定义。 (4)定义一个结构体类型,并不意味着系统将分配一段内存单元来存放各数据项成员。因为定义类型与定义变量是不同的,定义一个类型只是表示这个类型的结构,也就是告诉系统它由哪些类型的成员构成,各占多少个字节,各按什么形式存储,并把它们当作一个整体来处理。因此,定义类型是不分配内存单元的,只有在定义了某类型的变量以后,才实际占据存储单元。比如系统定义了int、float等类型,但并不具体分配内存单元,是对具体数据的“抽象”。一种类型只表明一种特征,如果以后定义某个变量为该类型,那么该变量占用的内存空间就应当具备这种特征。 (2)在定义一个结构体类型的同时定义结构体类型变量: struct 结构体名 { 成员项列表; }变量名列表; 例如: struct person {char name[20]; int age; char sex; }pupil,student; 在定义结构体类型的同时又定义了两个变量pupil、student。如果需要,还可以再用此struct person定义其他变量。如:struct person men,women; /*再定义两个struct person类型的变量。*/ (3)直接定义结构体类型的变量: struct { 成员项列表; }变量名列表; 例如:struct { char name[20]; int age; char sex; }pupil,student; 此时把pupil和student两个变量直接定义为花括弧内的结构体类型。但由于没有定义此结构体类型的名字,因此不能再用此结构体类型来定义其他变量。比如下面的定义是非法的: struct men,women; 2.定义结构体类型变量时应注意的问题(1)当定义了变量pupil和student为结构体类
您可能关注的文档
- 2013 互联网考试 答案.doc
- 电子商务复习题.doc
- M12 排队论.ppt
- 煤矿防治水规定学习体会.ppt
- 第三章立体的截切与相贯.ppt
- 第2篇建筑空间构成及组合.ppt
- 我们生活在信息时代.ppt
- 3.3 吸收带类型与溶剂效应.ppt
- 计算机网络网络课练习+参考答案.doc
- 信号与信息技术.ppt
- 2023年12月江苏省连云港市基层事业单位专项招聘32名“三支一扶”服务期满考核合格人员2244笔试历年典型考题及考点剖析附答案详解.docx
- 2023年12月湖北工程职业学院专项事业编制工作人员笔试笔试历年典型考题及考点剖析附答案详解.docx
- 2023年12月吉林大学专职辅导员公开招聘15人笔试历年典型考题及考点剖析附答案详解.docx
- 2023年12月陕西师范大学管理职员公开招聘7人笔试历年典型考题及考点剖析附答案详解.docx
- 2023年12月陕西省文化和旅游厅直属事业单位自主公开招考高层次人才笔试历年典型考题及考点剖析附答案详解.docx
- 2023年广西桂林市阳朔县事业单位面向在三支一扶人员招考聘用笔试历年典型考题及考点剖析附答案详解.docx
- 2023年湖北丹江口市引进高层次人才40人笔试历年典型考题及考点剖析附答案详解.docx
- 2023年11月云南省墨江哈尼族自治县教育体育系统所属事业单位2024年招聘50名急需紧缺人才101笔试历年典型考题及考点剖析附答案详解.docx
- 2023年11月云南省蒙自市事业单位2024年校园公开招考108名工作人员笔试历年典型考题及考点剖析附答案详解.docx
- 2023年12月江西吉安市井冈山联动指挥大厅公开招聘3人笔试历年典型考题及考点剖析附答案详解.docx
文档评论(0)