C语言(第9章_结构).ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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为结构体类

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档