书签 分享 收藏 举报 版权申诉 / 92
上传文档赚钱

类型第9章结构体及共用体课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4638927
  • 上传时间:2022-12-28
  • 格式:PPT
  • 页数:92
  • 大小:899.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第9章结构体及共用体课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    结构 共用 课件
    资源描述:

    1、1.2022-11-142.2022-11-143一种构造类型数据一种构造类型数据 结构体结构体由若干不同类型的数据项组成,由若干不同类型的数据项组成,构成结构体的各个数据项称为构成结构体的各个数据项称为结构体成员结构体成员。.2022-11-144lstructstruct为关键字;为关键字;l结构体名结构体名是用户定义是用户定义的的类型标识类型标识。l 中是组成该结构体中是组成该结构体的的成员成员。成员的。成员的数据数据类型类型可以是可以是C语言所允语言所允许的任何数据类型许的任何数据类型。.2022-11-145.2022-11-146例如学生类型的定义:例如学生类型的定义:struct

    2、 student char num8;/*学号是学号是字符数组字符数组类型类型*/char name30;/*姓名是姓名是字符数组字符数组类型类型*/char sex;/*性别是性别是字符型字符型 */int age;/*年龄是年龄是整型整型 */char addr60;/*住址是住址是字符数组字符数组类型类型*/int score6;/*成绩是成绩是整型数组整型数组类型类型*/;.2022-11-147 结构体变量的各个成员在内存中占用连续存储结构体变量的各个成员在内存中占用连续存储区域,区域,结构体变量结构体变量所占内存所占内存结构体中结构体中每个成每个成员员所占用内存的所占用内存的长度之

    3、和长度之和。.2022-11-148 struct date int year,month,day;struct student char num8;char name30;char sex;birthday;/*成员为结构体类型成员为结构体类型*/char addr60;int score6;.2022-11-149.2022-11-1410.2022-11-1411 如果初值个数少于结构体成员个数,如果初值个数少于结构体成员个数,则将无初值对应的成员赋以则将无初值对应的成员赋以0值。值。如果初值个数多于结构体成员个数,如果初值个数多于结构体成员个数,则编译出错。则编译出错。.2022-11

    4、-1412 元素的个数可以省略,根据赋初值时元素的个数可以省略,根据赋初值时结构体常量的个数确定数组元素的个数结构体常量的个数确定数组元素的个数.2022-11-1413.2022-11-1414.2022-11-1415.2022-11-1416a.birthday.yeara.birthday.montha.birthday.day.2022-11-1417.2022-11-1418.2022-11-1419.2022-11-1420p是指向是指向struct student结结构体变量的指针变量构体变量的指针变量.2022-11-1421“”是指向结构体成员是指向结构体成员运算符,优先级

    5、为一级运算符,优先级为一级 p=&d.year.2022-11-1422Enter today date(YYYY/MM/DD):2006/06/23Today:2006/6/23.2022-11-1423.2022-11-1424ppppp1 H 1.0082 He 4.00263 Li 6.9414 Be 9.01218.2022-11-1425.2022-11-1426p101301101B200D300301.2022-11-1427.2022-11-1428.2022-11-1429 形参是结构体变量。调用此函数时,形参是结构体变量。调用此函数时,系统将分别为形参系统将分别为形参cx

    6、和和cy各分配一个各分配一个sizeof(struct complex)大小的内存空间,大小的内存空间,每个成员都要一一传递。每个成员都要一一传递。.2022-11-1430.2022-11-1431.2022-11-1432.2022-11-1433head 1000 1032 3284 1296 1382 2008图图9.2 动态单向链表示意图动态单向链表示意图C3284H1296A1382I2008NNULLNULL1000 1032 struct nodechar c;struct node *next;.2022-11-1434 C语言提供了相关的存储管理库函数。这里语言提供了相关的

    7、存储管理库函数。这里仅介绍其中三个,它们的原型说明在仅介绍其中三个,它们的原型说明在“stdlib.h”头文件和头文件和“alloc.h”头文件中,使用头文件中,使用这三个函数时,应选择其中一个头文件包含到这三个函数时,应选择其中一个头文件包含到源程序中。源程序中。.2022-11-1435将函数返回值转换将函数返回值转换成结构体指针成结构体指针 p-n=5 p-next=0nnext5NULLp.2022-11-1436.2022-11-1437动态分配了动态分配了10个存放整个存放整型数据的存储单元型数据的存储单元.2022-11-1438 实参必须是一个指向动态分配存储区实参必须是一个指

    8、向动态分配存储区的指针,它可以是任何类型的指针变量。的指针,它可以是任何类型的指针变量。.2022-11-1439q 建立链表就是根据需要一个一个地开建立链表就是根据需要一个一个地开辟新结点,在结点中存放数据并建立结点辟新结点,在结点中存放数据并建立结点之间的链接关系。之间的链接关系。头指针头指针h设为设为NULL读入一个学生姓名读入一个学生姓名 当姓名长度不为当姓名长度不为0 开辟新结点开辟新结点 p=NEW strcpy(p-name,name)gets(p-tel)p-next=NULL h=NULL T F h指向第一个指向第一个 连接新结点连接新结点 结点结点 h=p q-next=

    9、p q指向新的尾结点指向新的尾结点 q=p 读入一个学生姓名读入一个学生姓名图图9.3 建立单向链表建立单向链表NULLhppq .2022-11-1440.2022-11-1441.2022-11-1442.2022-11-1443 p指向第一个结点指向第一个结点 p=head 当当p不为不为NULL 输出结点数据输出结点数据 p指向下一个结点指向下一个结点:p=p-next图图9.5 输出链表的输出链表的N-S图图headppppNULLNULL.2022-11-1444.2022-11-1445.2022-11-1446 headNULLNULL第第i-1个结点个结点 第第i个结点个结点

    10、 第第i+1个结点个结点.2022-11-1447 headp.2022-11-1448 headpp q.2022-11-1449 headppp qq .2022-11-1450 p=head while(strcmp(x,p-name)!=0&p-next!=NULLNULL)q指针跟随指针跟随p指针后移查找指针后移查找(q=p;p=p-next;)strcmp(x,p-name)=0 T F p=head T F head=p-next q-next=p-next 没找到没找到 free(p)图图9.9 删除链表中指定结点的删除链表中指定结点的N-S图图删除删除第一个第一个结点结点 删

    11、除中间删除中间结点或尾结点或尾结点结点 删除结点工删除结点工作分两步:作分两步:查找结点查找结点删除结点删除结点学生姓名学生姓名当姓名不同并且当姓名不同并且不是尾结点循环不是尾结点循环.2022-11-1451查找结点查找结点.2022-11-1452.2022-11-1453 headNULLNULL第第i个结点个结点ppqqp0p新的第新的第i个结点个结点.2022-11-1454 headpp0.2022-11-1455 headpqp0.2022-11-1456 headpp q p0pq.2022-11-1457 head=NULL T F p=head head=p0 while(

    12、strcmp(x,p-name)!=0&p-next!=NULLNULL)p0-next q指针跟随指针跟随p指针后移查找指针后移查找(q=p;p=p-next;)=NULL NULL strcmp(x,p-name)=0 T F p=head T F p-next=p0 head=p0 q-next=p0 p0-next=NULLNULL p0-next=p图图9.11 在链表指定位置前插入结点的在链表指定位置前插入结点的N-S图图当姓名不同并且当姓名不同并且不是尾结点循环不是尾结点循环空表时空表时插入插入结点结点在表尾在表尾追加结点追加结点 插入结点工插入结点工作分两步:作分两步:查找插查

    13、找插入位置入位置连接连接新结点新结点在表头在表头插入结点插入结点 在表中间在表中间插入结点插入结点.2022-11-1458.2022-11-1459查找插入点查找插入点.2022-11-1460.2022-11-1461.2022-11-1462.2022-11-1463可以先选择可以先选择1 1建建立一个链表,然立一个链表,然后根据需要选择后根据需要选择功能功能2 2、功能、功能3 3、功能功能4 4、直到选、直到选择择0 0退出程序的退出程序的运行运行.2022-11-1464.2022-11-1465一种构造类型数据一种构造类型数据 共用体共用体由若干不同类型的数据项组成,由若干不同类

    14、型的数据项组成,构成共用体的各个数据项称为构成共用体的各个数据项称为共用体成员共用体成员。.2022-11-1466lunionunion为关键字;为关键字;l共用体名共用体名是用户定义是用户定义的的类型标识类型标识。l 中是组成该共用体中是组成该共用体的的成员成员。成员的。成员的数据数据类型类型可以是可以是C语言所允语言所允许的任何数据类型许的任何数据类型。.2022-11-1467 定义了一个定义了一个union utypeunion utype共用体共用体类型,共用体类型定义不分配内存类型,共用体类型定义不分配内存空间,只是说明此类型数据的组成空间,只是说明此类型数据的组成情况。情况。.

    15、2022-11-1468 按照共用体类型的组成,系统为定义的共用体按照共用体类型的组成,系统为定义的共用体变量分配内存单元。变量分配内存单元。共用体变量共用体变量所占内存所占内存共用体中占用内存的共用体中占用内存的长度最长的成员长度最长的成员。.2022-11-1469.2022-11-1470.2022-11-1471.2022-11-1472 union utype int i;char ch;long l;char c4;a,*p=&a;.2022-11-1473.2022-11-1474 共用体类型变量在定义时只能对第一共用体类型变量在定义时只能对第一个成员进行赋初值。个成员进行赋初值

    16、。由于第一个成员是字符型,用一个字由于第一个成员是字符型,用一个字节,所以对于初值节,所以对于初值0 0 x9741x9741仅能接受仅能接受0 0 x41x41,初值的高字节被截去。初值的高字节被截去。1.A 41A 412.a 61a 61对对u2u2成员的引成员的引用是无意义的用是无意义的.2022-11-1475低地址低地址高地址高地址1234567856787830541984122081A高地址高地址低地址低地址.2022-11-1476 枚举枚举是一个具有有限个是一个具有有限个整型符号常量的整型符号常量的集合集合,这些整型符号常量称为枚举常量。,这些整型符号常量称为枚举常量。每个

    17、枚举类型都必须进行类型的定义,每个枚举类型都必须进行类型的定义,定义时必须将其所有的枚举常量一一列举,定义时必须将其所有的枚举常量一一列举,以便限定此枚举类型变量的取值范围。以便限定此枚举类型变量的取值范围。.2022-11-14770123456 在枚举类型中,每个在枚举类型中,每个枚举常量枚举常量都代表一都代表一个整型值。在定义枚举类型的同时可隐式或个整型值。在定义枚举类型的同时可隐式或显式地显式地定义枚举常量所代表的值定义枚举常量所代表的值。.2022-11-14782345.2022-11-1479.2022-11-1480是是enum color2类型的枚举值类型的枚举值.2022-

    18、11-1481.2022-11-14821含义不直观含义不直观.2022-11-1483.2022-11-1484.2022-11-1485.2022-11-1486.2022-11-1487.2022-11-1488是关键字;是关键字;可以是可以是基本类型、构造类型、指针类基本类型、构造类型、指针类型或自定义类型名;型或自定义类型名;是自定义的类型名。是自定义的类型名。.2022-11-1489int i;与与 COUNTER i;等价。等价。struct date birthday;与与 DATE birthday;等价。等价。.2022-11-1490.2022-11-1491.2022-11-1492struct CHNODE *p;.

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第9章结构体及共用体课件.ppt
    链接地址:https://www.163wenku.com/p-4638927.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库