版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、了解学习目标、结构和联合体的基本用法了解结构和联合体之间的区别,概述,c中,结构是一种数据类型,可以使用结构变量,因此,像使用其他类型的变量一样,在使用结构变量时必须首先定义结构变量。定义结构变数的一般格式为: struct结构名称类型变数名称。类型变量名称;结构变量;结构类型变量,如果结构的标识符不是变量名称。类型是第二部分中介绍的五种数据类型(整数、浮点数、文字、指针和值)。构成结构的每个类型变量称为结构成员(就像数组元素一样),但是在数组中,元素是通过以下标签访问的,结构是通过变量名称访问成员的:以下示例说明了如何定义结构变量、结构示例和struct student int num。Ch
2、ar name20Char sexInt ageChar addr30结构类型变量,struct string char name8Int ageChar sex2Char depart20Float wage 1、wage 2、wage 3、wage 4、wage 5;个人或struct string char name8Int ageChar sex2Char depart20Float wage 1、wage 2、wage 3、wage 4、wage 5;Struct string person、结构类型变量,如果需要定义相同形式的多个结构变量,则首先进行结构说明,然后使用结构名称定义变
3、量。例如, struct string Tianyr、Liuqi、如果省略结构名称,则称为未命名结构,这在函数中经常发生,使用此类结构时前面的示例为: struct char name8Int ageChar sex2Char depart20Float wage 1、wage 2、wage 3、wage 4、wage 5;蒂亚尼,刘奇;结构变量引用,结构是新的数据类型,因此,结构变量可以像其他类型的变量一样指定和运算值,只是将成员用作主变量。结构成员由:结构变量表示。成员名称结构变量。如果您查看完整的成员名称,则此完整的数据类型与结构中该成员的数据类型相同(如上所述)。以下示例定义了一个结构
4、变量,其中每个成员从键盘接收数据,然后聚合结构的浮点数,显示计算结果,同时将数据作为文本存储在名为wage.dat的磁盘文件中,此示例验证对其他结构成员的访问。#include main() struct /*定义结构变量*/char name8。Int ageChar sex2Char depart20Float wage 1、wage 2、wage 3、wage 4、wage 5;a;FILE * fpFloat wagechar c=Y;Fp=fopen(wage.dat,w);/*仅创建一个文件*/while(c=Y|c=y) /*确定是否继续循环*/printf(name :);Sc
5、anf(%s,a . name);/*输入名称*/printf(age :);Scanf(%d,8,printf(wage 13360);Scanf(%f),结构数组,它是具有相同结构类型的变量的集合。要定义40个班级的学生姓名、性别、年龄和地址,可以将其定义为结构数组。 struct char name8,如下所示;Char sex2Int ageChar addr40Student40对结构阵列成员的存取是使用阵列元素作为结构变数的:结构阵列元素。必须指出的是,成员名称(例如: student 0 . name student 30 . age)实际上与二维结构相同,一维是结构变量,二维是
6、结构成员。结构阵列的成员也可以是阵列变数。Struct a int m35float f;Char s20y4;要访问结构a中结构变量y2的此变量,可以创建为指向结构的指针y2.m14,结构指针。由结构变量名前面的*运算符定义。例如,使用前面介绍的结构,将结构指针指向: struct string char name8Char sex2Int ageChar addr40* student也可以将结构指针名称仅作为结构说明省略,并使用以下语句定义结构指针:Struct string * student结构成员的结构指针访问方式不同于结构成员的结构变量访问方式。结构成员的结构指针访问由结构成员:
7、结构指针名称表示。其中-是两个符号-和的组合,就像一个箭头指向结构成员一样。例如,要为上面定义的结构的name和age指定值,请使用语句: strcpy(student-name,Lu G.C)。student-age=18;实际上,student-name是(*student)。name的缩写。结构指针是指向结构(结构中第一个构件的第一个地址)的指针,因此必须先初始化结构指针,然后才能使用它。也就是说,为整个结构长度分配字节空间。可以使用以下函数完成此操作:通过以下示例, student=(struct string *)malloc(Size of(struct string)Size o
8、f(struct string)自动获取string结构的字节长度,malloc: 1.因为结构是数据类型,所以定义的结构或结构指针变量具有局部变量和完整变量,具体取决于定义的位置。2.结构变量名不是指向其结构的地址,因此与数组名称的含义不同,结构第一个成员的第一个地址必须是int age。Struct addr addressStudent其中: addr是另一个结构的结构名称,必须首先说明struct addr char city20。Unsigned long zipcodeChar tel14如果要在Student结构的成员address结构中为zipcode指定值,则: studen
9、t . address . zip code=20001;每个结构成员名称按从最外层到最内层的顺序列出。也就是说,嵌套结构成员是:结构变量名。巢状结构变数名称。结构成员名称,其中:可以有多个嵌套结构,结构成员名称是成员名称,而不是最内部结构中的结构。结构注意事项,不能在结构之间相乘或相减,但可以指定一般结构变量和结构指针变量作为函数参数的徐璐值的问题:stutct student stut * stu(G1)G2(stutct student * stu)示例:联合体定义,并集说明: union集成名称数据类型成员名称格式。数据类型成员名称.合并变量名称;关联表示通用内存位置,其中多个变量徐璐
10、存储不同数据类型和不同长度的变量,徐璐存储在不同的时间。以下示例表示联盟a_bc: union a_bc int I。Char mm15,联合体变量,集成变量lgc中,全大小I和字符mm共享相同的内存位置。描述合并时,编译程序会自动创建变量,该变量是合并中最大的变量长度。对相应成员的协作访问与结构相同。统一变量也可以定义为数组或指针,但是在定义为指针时,请使用-符号。合并访问成员可以是:合并名称-成员名称、16、合并结构嵌套或结构中的成员,也可以是结构。例如: struct int ageChar * addrunion int I;Char * chx;Y10要从结构变量y1访问合并x的成员
11、I,请选择: y1 . x . I;结构变量y2的统一x的字符串指针ch的第一个字符可以创建为: *y2.x.ch。如果写为Y2.x. * ch是错误的。结构和集成差异,1 .结构和合并徐璐由多个其他数据类型成员组成,但是在任何时间点,只有一个选定成员存储在联合中,结构中的所有成员都存在。2.为其他成员指定合并值会复盖其他成员,原始成员的值不存在,结构中其他成员的分配不受影响。以下是增加对深层联盟理解的例子。定义Main() union /*合并*/int I。Struct /*集成中的结构定义*/char first;Char second一半;一半。号码;号码。Number.i=0 x42
12、41/*联合成员分配*/printf (%c% cn,number.half.first,mumber . half . second);number . half . first=a;/*指定组合的结构成员*/number . half . second=b;Printf(%xn,number . I);结果为: AB 6261。在上例中,如果:给I赋值,您将看到8位(第一位和第二位)低。如果指定了First和second字符,则两个字符的ASCII代码也将小于I的8个字符。结构和关联列表以及关联列表是包含数据的某些单独数据结构(也称为节点)中的数据集合。连接列表中的每个节点都通过链和指针连接。程序通过指针访问连接列表中的节点。通常,这些节点是动态分配
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Q-HQTF01-2023 过滤器标准规范
- 2026年小班钻爬活动目标及指导
- 2026年化学类职业生涯规划书
- 2026年集贸市场规划设计案例分析
- 2026年酒店食品卫生安全案例分享
- 2026年幼儿园美术活动小班活动目标
- 2026年幼儿园户外活动安全措施
- 由甲大厦水土保持方案报告表
- 2025-2026学年my day教学设计
- 2025-2026学年大学舞蹈基训教学设计
- 2026年新版保安员考试试题附(答案+)
- 2026敬老院面试题及参考答案
- 2026学年四川省成都市郫都区三下数学期末学业质量监测模拟试题含答案
- (2026)住院患者发生管路非计划性拔管应急预案及处理流程应急预案(3篇)
- 康复评估工具在临床护理中的应用
- 2026海南万宁市旅游文化投资有限公司社会招聘10人考试参考题库及答案解析
- 2026旅游度假产品行业市场现状供需分析及投资评估规划分析研究报告
- 新建公厕施工组织设计范本
- 铜化集团招聘笔试题及答案
- 成都经开发展控股集团有限公司招聘笔试题库2026
- 苯乙烯安全风险隐患排查指南(试行)
评论
0/150
提交评论