版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编辑ppt主要内容主要内容 定义结构体类型变量的方法定义结构体类型变量的方法 结构体变量的引用结构体变量的引用 结构体变量的初始化结构体变量的初始化 结构体数组结构体数组 指向结构体类型数据的指针指向结构体类型数据的指针 共用体共用体 用用typedef定义类型定义类型编辑ppt为什么要定义结构体类型为什么要定义结构体类型n 在程序例如何表示一人(姓名、年龄、性别在程序例如何表示一人(姓名、年龄、性别)n 想表示多个人呢?想表示多个人呢?n 如何用计算机程序实现下述表格的管理?如何用计算机程序实现下述表格的管理? 编辑ppt初始化初始化编辑ppt编辑ppt优点:优点:结构紧凑,方便管理,数据的
2、相关性强,便于查找,结构紧凑,方便管理,数据的相关性强,便于查找,赋值时只针对某个学生,局部的输入错误不会影响全局和赋值时只针对某个学生,局部的输入错误不会影响全局和其他人信息其他人信息编辑ppt结构体和共用体结构体和共用体n C C语言允许用户根据具体问题利用已有的基本类型语言允许用户根据具体问题利用已有的基本类型来构造自己所需的数据类型来构造自己所需的数据类型n 数组、结构体、共用体都数据构造性数据类型数组、结构体、共用体都数据构造性数据类型n 结构体定义:由若干不同类型的数据项组成(结构体定义:由若干不同类型的数据项组成(不同不同类型数据的集合类型数据的集合),构成结构体的各个数据项称为
3、),构成结构体的各个数据项称为结构体成员结构体成员n 共同体定义:由若干不同类型的数据项组成,构成共同体定义:由若干不同类型的数据项组成,构成共同体的各个数据项称为共同体成员共同体的各个数据项称为共同体成员 编辑ppt数组、结构体、共同体比较数组、结构体、共同体比较n 数组:数组:相同类型数据构成,适合于对具有相同类型相同类型数据构成,适合于对具有相同类型属性的数据进行批处理属性的数据进行批处理n 结构体:结构体:将不同类型的数据组织到统一的名字下,将不同类型的数据组织到统一的名字下,适合于关系紧密、逻辑相关、具有相同或者不同属适合于关系紧密、逻辑相关、具有相同或者不同属性的数据进行处理,适合
4、于数据库管理系统性的数据进行处理,适合于数据库管理系统n 共同体:共同体:逻辑关系相关的不同类型数据集合,但数逻辑关系相关的不同类型数据集合,但数据成员是情形互斥的,每个时刻只有一个数据成员据成员是情形互斥的,每个时刻只有一个数据成员起作用。起作用。 struct 结构体名结构体名 数据类型数据类型 成员成员1 1名字;名字; 数据类型数据类型 成员成员2 2名字;名字; 数据类型数据类型 成员成员n n名字;名字;; 成员列表结构体结构体n 定义结构体定义结构体第一步:声明结构体模板第一步:声明结构体模板n 格式:格式: 如:如:struct student int num; char na
5、me20; char sex; int age; float score4; char addr30; ; 声明结构体模板的主要目的是利用已有的数据类型定义一个新的声明结构体模板的主要目的是利用已有的数据类型定义一个新的数据类型数据类型 结构体模板只是声明了一种数据类型,定义了数据的组织形式,结构体模板只是声明了一种数据类型,定义了数据的组织形式,并未声明结构体类型的变量并未声明结构体类型的变量编辑pptn 定义结构体定义结构体第二步:利用已经定义好的结构体数据类第二步:利用已经定义好的结构体数据类型定义结构体变量型定义结构体变量n 定义结构体变量方式:定义结构体变量方式: (1 1)先声明结
6、构体模板,在定义结构体变量)先声明结构体模板,在定义结构体变量struct 结构体名结构体名 结构体成员变量的定义;结构体成员变量的定义; 变量名变量名1,变量名,变量名2,.,变量名,变量名n;struct 结构体名结构体名 成员列表成员列表 ;struct 结构体名结构体名 变量名变量名1,变量名,变量名2,.,变量名,变量名n;(2 2)在声明结构体模板的同时定义结构体变量)在声明结构体模板的同时定义结构体变量编辑ppt(3 3)在直接定义结构体变量)在直接定义结构体变量struct 结构体成员变量的定义;结构体成员变量的定义; 变量名变量名1,变量名,变量名2,.,变量名,变量名n;此
7、时不出现结构此时不出现结构体名体名编辑ppt方法二:方法二:struct student int number; char name20; char sex; int age; float score; stu1,stu2;方法一:方法一:struct student int number; char name20; char sex; int age; float score;struct student stu1,stut2;方法三:方法三:struct int number; char name20; char sex; int age; float score; stu1,stu2;编
8、辑ppt说明:说明:n 结构体名(结构体名(struct):用于标识一种新的数据类型,即:用于标识一种新的数据类型,即结构体类型,可以省略。结构体类型,可以省略。n 注意区分结构体类型与基本数据类型的不同,它是复注意区分结构体类型与基本数据类型的不同,它是复合数据类型。合数据类型。n 结构体成员变量与普通变量的定义一样,它还可以是结构体成员变量与普通变量的定义一样,它还可以是结构体变量。结构体变量。编辑ppt嵌套的结构体嵌套的结构体numnamesexagebirthdayaddrmonthdayyearstruct Date int month; int day; int year; ;st
9、ruct Stu int num; char name20; char sex; int age; struct Date birthday; char addr30; ;编辑ppt用用typedef定义数据类型定义数据类型n 只是为一种已经存在的类型(系统固有或者用户自定只是为一种已经存在的类型(系统固有或者用户自定义的数据类型)定义一个新名字而已,并未定义一个义的数据类型)定义一个新名字而已,并未定义一个新的数据类型新的数据类型 例:typedef int integer;编辑pptn typedef优点之一:优点之一:有利于程序的通用性和移植性,有利于程序的通用性和移植性,程序会依程序会
10、依赖于硬件特性,用赖于硬件特性,用typedef类型就便于移植。类型就便于移植。例:用例:用typedef来定义与平台无关的类型。来定义与平台无关的类型。定义一个叫定义一个叫INTEGER的的int类型,在目标平台一上,它占类型,在目标平台一上,它占4个个字节:字节: typedef int INTEGER;在某些平台下,在某些平台下,int占占2个字节。要使数据类型的取值范围不变,个字节。要使数据类型的取值范围不变,只需要做如下定义:只需要做如下定义: typedef long INTEGER;也就是说,当跨平台时,只要改下也就是说,当跨平台时,只要改下 typedef 本身就行,不用对本身
11、就行,不用对其他源码做任何修改。其他源码做任何修改。编辑pptn typedef与与#define有相似之处有相似之处 例如:例如:typedef int COUNT; #define COUNT int 作用:都是用作用:都是用COUNT代表代表int。n But, 它们二者是不同的。它们二者是不同的。#define是在预编译时处理的,它只能作简单的字符是在预编译时处理的,它只能作简单的字符串替换串替换;typedef是在编译时处理的。实际上它并不是作简是在编译时处理的。实际上它并不是作简单的字符串替换,而是采用如同定义变量的方法那单的字符串替换,而是采用如同定义变量的方法那样来声明一个类型
12、。样来声明一个类型。编辑ppt结构体变量初始化结构体变量初始化100310121王刚M199172839082对字符数组类型结构体成员进行赋值时,必须使用字符串处理函数对字符数组类型结构体成员进行赋值时,必须使用字符串处理函数strcpy()编辑ppt结构体变量的引用结构体变量的引用例例:n 当出现结构体嵌套时,必须以级联方式访问结构体当出现结构体嵌套时,必须以级联方式访问结构体成员成员编辑ppt结构体变量输入输出结构体变量输入输出编辑ppt结构体变量的地址是结构体变量所占内存空间的首地址,而结构体结构体变量的地址是结构体变量所占内存空间的首地址,而结构体成员的地址与结构体成员在结构体中所处的
13、位置及该成员所占内存成员的地址与结构体成员在结构体中所处的位置及该成员所占内存空间的字节数相关空间的字节数相关编辑ppt在定义了结构体变量以后,当然可以引用这个变量。但应遵守以下规则: (1 1)不能将一个结构体变量作为一个整体进行输入和输出)不能将一个结构体变量作为一个整体进行输入和输出。 例:例:printf(“%d,%s,%c,%d,%fn”,stu1); (2 2)如果成员本身又属一个结构体类型)如果成员本身又属一个结构体类型, ,则要用若干个成员运则要用若干个成员运算符算符, ,一级一级地找到最低的一级的成员。只能对最低级的成员一级一级地找到最低的一级的成员。只能对最低级的成员进行赋
14、值或存取以及运算。进行赋值或存取以及运算。 例:例:编辑ppt(3 3)对结构体变量的成员可以像普通变量一样进行各种运算)对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。(根据其类型决定可以进行的运算)。 例:例: stu2.score=stu1.score; sum=stu1.score+stu2.score; student1.age+; +student2.age;(4 4)可以引用结构体变量成员的地址,也可以引用结构体变)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。量的地址。例:例:scanf(%d,&stu1.num); (输入
15、的值)(输入的值) printf(%p,&stu1);); (输出(输出stud1的首地址)的首地址)编辑ppt结构体所占内存的字节数结构体所占内存的字节数编辑ppt多数计算机为了提高内存的寻址效率,为特定的数据类型引入多数计算机为了提高内存的寻址效率,为特定的数据类型引入了特殊的内对齐需求。不同的系统和编译器,内存对齐的方式了特殊的内对齐需求。不同的系统和编译器,内存对齐的方式不同,为了满足处理器对齐的要求,可能会在较小的成员后加不同,为了满足处理器对齐的要求,可能会在较小的成员后加入补位,导致结构体实际所占内存的字节数比我们想象的多入补位,导致结构体实际所占内存的字节数比我们想象的多编辑ppt结构体数组的定义和初始化结构体数组的定义和初始化编辑ppt编辑ppt编辑ppt结构体指针的定义和初始化结构体指针的定义和初始化编辑ppt编辑ppt以下以下3 3种形式等价种形式等价: 结构体变量成员名结构体变量成员名(* *)成员名)成员名 -成员名成员名编辑ppt编辑ppt编辑ppt向函数传递结构体向函数传递结构体n 用结构体指针或结构体数组作为函数参数,向函用结构体指针或结构体数组作为函数参数,向函数传递结构体的地址数传递结构体的地址按值调用按值调用按地址调用按地址调用编辑ppt结构体变量作函数参数结构体变量作函数参数实现按值调用实现按值调用编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年劳务员考前冲刺模拟题库含答案详解【新】
- 2026年采矿学I模考模拟试题【有一套】附答案详解
- 2026年研究生《西医综合》押题宝典模考模拟试题附答案详解【B卷】
- 2026年临床医学检验临床血液技术预测试题带答案详解(完整版)
- 鼓号队实施方案预案
- 2026年新能源企业供应链协同管理方案
- 标准花园建设方案
- 设备维护保养制度
- 库存管理控制制度
- 2026年安徽省《保密知识竞赛必刷100题》考试题库及参考答案详解【培优a卷】
- 2026 春季人教版八年级下册历史全册教案
- 病案编码考试题及答案
- 2026年长春润德投资集团有限公司校园招聘笔试参考题库及答案解析
- 工程计量监理实施细则
- 2025年工业废水处理AI工程师的污水处理厂智能控制案例
- 波龙-301308-深度报告:国内存储器龙头多维布局伴随AI大势迎来广阔成长空间-
- 宠物直播合同模板(3篇)
- 2025-2026学年云南省昆明市普通高中高三上学期摸底诊断测试英语试题
- VMware6培训教学课件
- GB/T 46943-2025临床实验室检测和体外诊断系统病原宏基因组高通量测序性能确认通用要求
- 初中历史新课程标准解读
评论
0/150
提交评论