第十一章 结构体及共用体.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章 结构体及共用体

结构体与共用体 §11.1 结构体类型的定义 11.1.1 概述 在此之前,除数组外的基本变量都是属于非构造类型的数据。数组是一种构造类型数据。本章介绍另两种构造类型的数据——结构体和共用体。 C语言中的结构体相当于其他高级语言中的“记录”,它可以把多种类型的数据组合在一起,构成一个整体,一种新类型的数据,从而适应复杂类型数据的要求。 11.1.2 结构体类型的定义 定义 struct 结构体名 {成员1; 成员2; ...... 成员n; }; /*只定义类型时,最后一行上的“;”不可缺少*/ 其中:结构体名称为该结构体标记。 成员称为结构体域(集合称为域表),其构成为“类型名 成员名”,成员名构成规则与变量名相同。 结构体变量的存储空间分配 各个成员所占字节数之和,即是该变量所需字节数。 结构体类型的定义示例见教材P260。 §11.2结构体类型变量的定义 可以用三种方法定义结构体类型变量。 11.2.1 先声明结构体类型,再定义变量 先定义一个结构体类型,其中student为结构体名,如: struct student /*该类型共包含4个成员,各成员的类型可以不同*/ {int num; char name[20]; int age; float score; }; /*作为类型的定义,此行最后的“;”不可缺少*/ 再定义两个属于struct student类型的结构体变量stud1和stud2 struct student stud1,stud2; /*其中“struct student”为结构体类型名*/ 这两个结构体变量stud1、stud2在内存中所占字节数均为28(=2+20+2+4)。 说明 定义一个标准类型的变量时,只需指定类型名、变量名即可,如int i,j; 而定义一个结构体变量时,不但要指定结构体类型,而且还必须指明是哪一种具体的结构体类型,如stud1,stud2;(student为具体的结构体名,而struct student整体则代表具体的结构体类型)。 11.1.2 在定义结构体类型的同时定义变量 如:struct student {int num; char name[20]; int age; float score; }stud1,stud2; /* 定义了两个struct student类型的变量stud1、stud2*/ 11.1.3 直接定义结构体类型变量 如:struct /* 结构体名并不出现,而直接定义变量*/ {int num; char name[20]; int age; float score; }stud1,stud2; 与第一种和第二种方法相比,若要再定义一些与stud1、stud2相同的结构体变量时,这种方法显然不方便。 11.1.4 关于结构体类型的几点说明 类型与变量是不同的概念,不能混淆。可以对变量进行存取、赋值等运算;却不能对类型进行这些操作或运算。此外,在编译时只对变量分配空间,并不对类型分配空间。 可以单独使用结构体变量中的成员,其地位和作用相当于普通变量。具体见后。 结构体的成员也可以是结构体变量。 struct date /* 定义一个名为“date”的struct date类型的结构体*/ {int month; int day; int year; }; struct student {int num; har name[20]; int age; struct date birthday; /* birthday成员是一个struct date类型的结构体变量*/ }stud1,stud2; /* 注意,此处用到的struct date类型应当是在此前已经定义的*/ 4、结构体变量内部的成员名可以与结构体外的其他变量名相同,但二者代表不同对象。 §11.3 结构体变量的引用 11.3.1 引用形式 结构体变量名.成员名 其中“.”为成员(分量)运算符,其运算级别与结合方向见书P375。 11.3.2 引用原则 不能将一个结构体变量作为整体进行输入和输出,而只能对结构体变量的各个成员进行输入输出。如:上例中可以有stud1.num=10010;stud2.num=20010; 只能对结构体中最低级的成员进行赋值、存取以及运算。若成员本身又属于一个结构体类型,则必须要用若干成员运算符,一级一

文档评论(0)

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

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

1亿VIP精品文档

相关文档