- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 链表 ;链表是一种常见的重要的数据结构。它可以动态的分配存储空间,需要多少就分配多少,是一种动态地进行存储分配的结构。
一种简单链表如图所示: ;按规定在一个结构体的定义中,其成员类型可以是除本身结构类型之外的任何已有类型。也可以是任何已有类型(包括本身类型在内)的指针类型。
结构体不能进行除指针类型数据成员的递归定义。这是因为无论什么类
您可能关注的文档
最近下载
- 2025年山西通用航空职业技术学院单招职业适应性测试题库(全国通用).docx VIP
- 串联式吸附器变压吸附制氧.pdf VIP
- 高教社2024商务礼仪第四版教学课件-2024-01初识商务礼仪.docx VIP
- 会考语文河北试卷及答案.doc VIP
- 奥迪A4保养手册.doc VIP
- AQ 4230_粮食平房仓粉尘防爆规范.pdf VIP
- 2025年宁夏数学(专升本)真题及答案.docx VIP
- 《99.5%纯度变压吸附制氧与氧气提纯一体化系统》编制说明.pdf VIP
- YD 5214-2015 无线局域网工程设计规范.pdf VIP
- 2024年广东省基层住院医师线上岗位培训《推拿技术》答案-中医学专业培训课程专业课.docx VIP
原创力文档


文档评论(0)