C语言构造类型.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
会计学;第八章 构造类型 ;8.1 概述;C语言提供了自定义数据类型的方法,通过自定义类型将不同类型的数据组合成一个有机的整体,这些数据在一个整体中是互相联系的。 这种自定义的数据类型叫构造类型。 实际上在前面已经学习了一种构造类型——数组,数组是具有相同数据类型的一组元素集合。除了数组之外还有结构体、共用体。;8.2 结构体;C语言没有提供这种现成的数据类型,因此用户必须要在程序中建立所需的结构体类型。 声明一个结构体类型的一般形式为:;以学生实体为例,建立一个结构体类型: ;声明了一个叫student的结构体类型,它包括num、name、sex、age、score、addr等不同类型的数据项。 注意 : (1)结构体类型名为:struct student,其中struct是定义结构体类型的关键字,用来定义变量的类型。 (2)在{ }中定义的变量我们叫做成员,其定义方法和前面变量定义的方法一样,只是不能忽略最后的分号。 ;必须遵循先声明结构体类型,再定义结构体变量的原则。 三种定义结构体变量的方法: (1)先声明结构体类型再定义结构体变量名 格式如下: ;8.3 定义结构体类型变量的方法 ;说明: 定义结构体变量时,结构体类型名中的struct不能省,不能变成 :student stu1,stu2。 (2)在声明类型的同时定义变量 格式如下: ;例如:;(3)直接定义结构类型变量 格式如下: ;关于结构体类型说明 : ①类型与变量是两个不同的概念,不能混淆。变量分配内存空间,类型不分配空间。 ②对结构体中的成员可以单独使用,相当于普通变量,引用方法后面具体讲述。 ③结构体中成员也可以是一个结构体变量。 ;struct date { int month; int day; int year; }; struct student { int num; char name[20]; char sex; int age; struct date birthday;/*birthday是struct date类型*/ char addr[30]; }stu1,stu2; ;引用结构体变量要遵守如下规则: (1)不能将一个结构体变量作为一个整体进行输入输出(引用),而只能对结构体变量中的各个成员分别进行输入和输出(引用)。 结构体变量成员引用格式: ;(2)如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一??一级地找到最低一级的成员。只能对最低的成员进行赋值或存取以及运算。 例如: stu1.birthday.year=1983; (3)对结构体变量成员可以像普通变量一样进行各种运算。 例如:stu1.num++; stu1.age+=2; (4)可以引用结构体变量成员的地址。也可以引用结构体变量的地址。 ;结构变量的初始化 ;定义结构体数组 在定义结构体数组之前必须先声明结构体类型。如前面定义的结构体类型struct student。 声明好结构体类型之后就可以定义结构体数组了,其方法和定义简单类型的数组相似: ;结构体数组的初始化 ;可以不给出数组长度,数组长度由初始化的数据决定。 stu[ ]={{…},{…},{…}}; ;指向结构体变量的指针 和定义简单变量的指针变量一样定义指向结构体变量的指针变量。 ;例如: struct student stu1,*sp; sp=stu1; sp-num=10001; sp-sex=M; sp-age=18; sp-score=89.5; ;用结构体变量和指向结构体的指针作函数参数 (1)用结构体成员变量做实际参数 与简单变量作实参一样,属于“值传递”方式,只是要注意形参与实参在类型上要保持一致。 ;(2)用结构体变量做实际参数 注意: ①结构体变量的传递采用的是“值传递”的方式。 ②形参与实参的类型必须相同。 ③形参在函数调用期间也要占用内存单元,因此这种传递方式在空间与时间上开销较大 。;(3)指向结构体变量(或数组)的指针做实际参数 用指向结构体变量(或数组)的指针做实参是经常采用的一种方法 。 形参指针和实参指针都指向同一存贮单元,这种特点为函数返回多个数据提供了途径。 ;8.8 链表 ;链表是一种常见的重要的数据结构。它可以动态的分配存储空间,需要多少就分配多少,是一种动态地进行存储分配的结构。 一种简单链表如图所示: ;按规定在一个结构体的定义中,其成员类型可以是除本身结构类型之外的任何已有类型。也可以是任何已有类型(包括本身类型在内)的指针类型。 结构体不能进行除指针类型数据成员的递归定义。这是因为无论什么类

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档