第3章自定义数据结构

上传人:s9****2 文档编号:584178201 上传时间:2024-08-30 格式:PPT 页数:25 大小:216.02KB
返回 下载 相关 举报
第3章自定义数据结构_第1页
第1页 / 共25页
第3章自定义数据结构_第2页
第2页 / 共25页
第3章自定义数据结构_第3页
第3页 / 共25页
第3章自定义数据结构_第4页
第4页 / 共25页
第3章自定义数据结构_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《第3章自定义数据结构》由会员分享,可在线阅读,更多相关《第3章自定义数据结构(25页珍藏版)》请在金锄头文库上搜索。

1、第第3章章 自定义的数据结构自定义的数据结构 结构体、共同体和枚举类型结构体、共同体和枚举类型 1结构体定义:结构体定义:将将不同种类型不同种类型的数据有序地的数据有序地组合在一起组合在一起,构,构造出一个造出一个新的数据类型新的数据类型,这种形式称为,这种形式称为结构结构体。体。结构体是多种类型组合的结构体是多种类型组合的数据类型数据类型。2struct 结构体名结构体名 成员列表成员列表 ;struct student int num; char name20; char sex; char addr30; ;结构体名结构体名关键字关键字不同数据不同数据类型组成类型组成的的成员成员分号不能

2、少分号不能少3定义结构体类型变量的方法定义结构体类型变量的方法一、先定义结构体类型再定义变量名一、先定义结构体类型再定义变量名struct student int num; char name20; char sex; int age; float score; char addr30;struct student student1, student2;结构体类型名结构体类型名变量变量1变量变量2结构体类型只是一种数据结构体类型只是一种数据类型,不占内存空间,只类型,不占内存空间,只有定义结构体类型有定义结构体类型变量变量时时才开辟内存空间。才开辟内存空间。?到底这个结构体占用多大内?到底这个

3、结构体占用多大内存呢?存呢?#pragma pack(1)4 typedef struct student int num; char name20; char sex; int age; float score; char addr30; STUDENT ; STUDENT student1,student2;typedef的用法的用法5二、在定义类型的同时定义变量二、在定义类型的同时定义变量struct student int num; char name20; char sex; int age; float score; char addr30; student1, student2;

4、structstruct 结构体名结构体名 成员列表成员列表 变量名列表;变量名列表; 紧接着定紧接着定义变量义变量62 2、在编译时,仅对、在编译时,仅对变量变量分配空间,不对分配空间,不对类型类型分配分配空间。空间。1 1、结构体类型的变量在内存、结构体类型的变量在内存依照其成员的顺序依照其成员的顺序顺顺序排列,所占内存空间的大小是其全体成员所占空序排列,所占内存空间的大小是其全体成员所占空间的间的总和总和。3 3、对结构体中各个成员可以单独引用、赋值,其、对结构体中各个成员可以单独引用、赋值,其作用与变量等同。作用与变量等同。格式:格式:变量名变量名 . . 成员名成员名 student

5、1 . numstudent1 . num74 4、结构体的成员可以是另一个结构体类型。、结构体的成员可以是另一个结构体类型。struct date int month; int day; int year; ;struct student int num; char name20; struct date birthday; ;成员类型成员类型成员名成员名5 5、成员名可以与程序中的变量名相同,二者分占不同的内、成员名可以与程序中的变量名相同,二者分占不同的内存单元,互不干扰。例如,在程序中仍可以定义变量存单元,互不干扰。例如,在程序中仍可以定义变量 intint num; num;8结构体

6、类型变量的引用结构体类型变量的引用1 1、不能对结构体变量整体赋值或输出,只能分别对、不能对结构体变量整体赋值或输出,只能分别对各个成各个成员员引用。引用。cincinstudent1;student1;cincinstudent1.num; student1.num=100;student1.num; student1.num=100;可以将一个结构体变量可以将一个结构体变量整体整体赋给另外一个相同类型的结构赋给另外一个相同类型的结构体变量。体变量。 student2=student1;student2=student1;2 2、嵌套的结构体变量必须逐层引用。、嵌套的结构体变量必须逐层引用。

7、student1.student1.birthday.birthday.dayday=25;=25;3 3、结构体变量中的成员可以同一般变量一样进行运算。、结构体变量中的成员可以同一般变量一样进行运算。student1.birthday.day+; student1.birthday.day+; student1.score+=60;student1.score+=60;错误错误必须用成员名引用必须用成员名引用9对局部变量类型的结构体变量初始化对局部变量类型的结构体变量初始化void main(void) struct student long int num; char name20; ch

8、ar sex; char addr30; student1=901031, “Li Lin”, M, “123 Beijing Road”;coutstudent1.nameendl;输出:输出: LiLin对变量初始化,一一赋值对变量初始化,一一赋值10关于结构类型变量的使用,说明以下几点关于结构类型变量的使用,说明以下几点: :1 1、同类型的结构体变量之间可以直接赋值。这种、同类型的结构体变量之间可以直接赋值。这种赋值等同于各个成员的依次赋值。赋值等同于各个成员的依次赋值。 2 2、结结构构体体变变量量不不能能直直接接进进行行输输入入输输出出,它它的的每每一一个个成成员员能能否否直直接接

9、进进行行输输入入输输出出,取取决决于于其其成成员员的的类类型型,若若是是基基本本类类型型或或是是字字符符数数组组,则则可可以以直直接接输输入入输出。输出。3 3、结结构构体体变变量量可可以以作作为为函函数数的的参参数数,函函数数也也可可以以返返回回结结构构体体的的值值。当当函函数数的的形形参参与与实实参参为为结结构构体体类类型型的的变变量量时时,这这种种结结合合方方式式属属于于值值调调用用方方式式,即即属属于值传递。于值传递。11结构体数组结构体数组结构体数组中的结构体数组中的每个元素都是一个结构体类型的每个元素都是一个结构体类型的变量变量,其中包括该类型的各个成员。数组各元素,其中包括该类型

10、的各个成员。数组各元素在内存中连续存放。在内存中连续存放。结构体实际例子:结构体实际例子:TCP 报头报头12一、结构体数组的定义一、结构体数组的定义struct student int num; char name20; char sex; int age; float score; char addr30; ;struct student stu30;struct student int num; char name20; char sex; int age; float score; char addr30; stu30;直接定义直接定义13二、结构体数组的初始化二、结构体数组的初始化s

11、truct student int num; char name20; char sex; stu3= 1011, Li Lin,M, 1012,Wang Lan,F, 1013,Liu Fang,F;14共用体共用体C+语言中,允许语言中,允许不同的数据类型使用不同的数据类型使用同一存储区域同一存储区域,即,即同一存储区域由不同类型的变量共同表示。这种数据类型同一存储区域由不同类型的变量共同表示。这种数据类型就是共用体。就是共用体。union 共用体名共用体名 成员列表;成员列表; 变量列表;变量列表;union data int i; char ch; float f; a, b, c;u

12、nion data a, b, c;这几个成员在共用体变量中存放在同一地址,相互覆盖,这几个成员在共用体变量中存放在同一地址,相互覆盖,其长度为最长的成员的长度其长度为最长的成员的长度。15共用体变量的引用共用体变量的引用不能整体引用共用体变量,只能引用变量中不能整体引用共用体变量,只能引用变量中的成员。的成员。a.i 表示为整型表示为整型a.ch 表示为字符型表示为字符型a.f 表示为符点型表示为符点型16共用体变量的特点共用体变量的特点1、共用体的空间在某一时刻只有一个成员在起作、共用体的空间在某一时刻只有一个成员在起作用。用。2、共用体变量中的值是最后一次放入的值。、共用体变量中的值是最

13、后一次放入的值。3、共用体变量不能在定义时赋初值。、共用体变量不能在定义时赋初值。4、共用体变量不能作为函数的参数或函数值,但、共用体变量不能作为函数的参数或函数值,但可使用指向共用体的指针变量。可使用指向共用体的指针变量。5、共用体可以作为结构的成员,结构体也可以作、共用体可以作为结构的成员,结构体也可以作为共用体的成员。为共用体的成员。17union un int i; double y;struct st char a10; union un b;coutsizeof(struct st)endl;18union un short int a; char c2; w;w.c0=A; w.

14、c1=a;coutoctw.aendl; coutdecw.aendl;低字节低地址低字节低地址高字节高地址高字节高地址aAw.c1w.c02000H2001H输出:输出:0605010 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1aA为为65 a为为97 19void main(void) union EXAMPLE struct int x, int y; in; int a,b; e; e.a=1; e.b=2; e.in.x=e.a*e.a; e.in.y=e.b+e.b; coute.in.xte.in.ysun)6、枚举值可以进行加减一个整数、枚举值可以进行加减一个整数n的运算,得到其前后第的运算,得到其前后第n个元素的值。个元素的值。workday=sun;workday=(week)(workday+2);workday= = tue7、枚举值可以按整型输出其序号值。、枚举值可以按整型输出其序号值。workday=tue;coutworkday;224void main(void) enum team qiaut, cubs=4, pick, dodger=qiaut-2; coutqiauttcubst; coutpicktdodgerendl;输出:输出:045-225

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号