指针与动态数据结构 (2)幻灯片.ppt
《指针与动态数据结构 (2)幻灯片.ppt》由会员分享,可在线阅读,更多相关《指针与动态数据结构 (2)幻灯片.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、指针与动态数据结构(2)第1页,共24页,编辑于2022年,星期六11.1 11.1 11.1 11.1 概述概述概述概述/概述概述概述概述l静态数据结构静态数据结构:在编译时为其分配存储空间在编译时为其分配存储空间,大小不能改变。大小不能改变。l静态数据结构优点静态数据结构优点:分配算法简单分配算法简单,易于实现易于实现,使用方便。使用方便。l静态数据结构缺点静态数据结构缺点:易浪费存储空间易浪费存储空间,易产生下标越界错误。易产生下标越界错误。l动态数据结构动态数据结构:在运行时为其分配存储空间在运行时为其分配存储空间,大小可改变。大小可改变。l动态数据结构优点动态数据结构优点:可节约存储
2、空间,灵活,应用广。可节约存储空间,灵活,应用广。l动态数据结构缺点动态数据结构缺点:分配算法复杂分配算法复杂,实现难度大。实现难度大。象象链表链表、树结构树结构、图结构图结构等数据结构都适合用动态数据结构实现,等数据结构都适合用动态数据结构实现,指针是实现动态数据结构的有效手段。指针是实现动态数据结构的有效手段。指针和动态数据结构广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。11.1 11.1 概述概述第十一章第十一章 指针与动态
3、数据结构指针与动态数据结构u u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第2页,共24页,编辑于2022年,星期六11.1 11.1 11.1 11.1 概述概述概述概述/存储结构存储结构存储结构存储结构u存储单元地址存储单元地址:存储单元在内存中的排列序号(编号)。存储单元在内存中的排列序号(编号)。u存储分配存储分配:系统为变量、数组、结构体、指针分配连续存储单元,用系统为变量、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存于存储有关数据,其变量名、数组名、结构体名、指针名
4、代表连续存储单元首地址。储单元首地址。u指针变量(指针)指针变量(指针):为其分配的存储单元用于保存其它变量、数组、为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构。结构体的地址。通过改变其所存储的地址内容实现动态数据结构。u示例:示例:INTEGER,TARGET :I=1255 INTEGER,TARGET :I=1255 REAL:R=534.45 REAL:R=534.45 CHARACTER*5:S=CHINA CHARACTER*5:S=CHINA INTEGER:A(3)=(/35,45,55/)INTEGER:A(3)=(/35
5、,45,55/)INTEGER,POINTER:P INTEGER,POINTER:P P=I P=I11.1 11.1 概述概述第十一章第十一章 指针与动态数据结构指针与动态数据结构u u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第3页,共24页,编辑于2022年,星期六11.1 11.1 11.1 11.1 概述概述概述概述/访问方式访问方式访问方式访问方式11.1 11.1 概述概述第十一章第十一章 指针与动态数据结构指针与动态数据结构u直接访问直接访问:直接访问存储单元中的内容。如对普通变量、数直接访问存储单元中的内容。如
6、对普通变量、数组元素、结构体成员的访问,采用直接访问方式。如图组元素、结构体成员的访问,采用直接访问方式。如图11-11-2 2所示。所示。u间接访问间接访问:先从存储单元中得到被访问存储单元地址,然后先从存储单元中得到被访问存储单元地址,然后通过该地址访问被访问存储单元中的内容。如对指针变量通过该地址访问被访问存储单元中的内容。如对指针变量的访问,采用间接访问方式。如图的访问,采用间接访问方式。如图11-311-3所示。所示。u指针变量存储单元中保存目标变量地址,通常用箭头表示。指针变量存储单元中保存目标变量地址,通常用箭头表示。F90F90指针保存目标变量名称,将指针看成目标变量的别名。指
7、针保存目标变量名称,将指针看成目标变量的别名。u指针变量声明后指针变量声明后,未分配存储空间未分配存储空间,访问前需分配存储空间。访问前需分配存储空间。(示例示例)I I125125125125J J3753753*1253*125I=125I=125J=3*IJ=3*IP PI I125125125125J J3753753*1253*1253*P3*PI I地址地址I=125I=125P=IP=IJ=3*IJ=3*Iu u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第4页,共24页,编辑于2022年,星期六11.1 11.1 1
8、1.1 11.1 概述概述概述概述/指针声明指针声明指针声明指针声明11.1 11.1 概述概述第十一章第十一章 指针与动态数据结构指针与动态数据结构uPOINTERPOINTER属性属性:通过通过POINTERPOINTER属性声明指针变量。属性声明指针变量。uTARGETTARGET属性属性:通过通过TARGETTARGET属性声明指针可指的目标变量。属性声明指针可指的目标变量。u一般格式:一般格式:,POINTER:,POINTER:,或或 POINTER POINTER,例:例:REAL Q1,Q2 REAL Q1,Q2 INTEGER,POINTER:P1,P2 INTEGER,PO
9、INTER:P1,P2!声明指向整型变量的指针声明指向整型变量的指针P1P1和和P2P2 POINTER Q1 POINTER Q1 !声明指向实型变量的指针声明指向实型变量的指针Q1Q1 POINTER IQ1,IQ2 POINTER IQ1,IQ2!声明指向整型变量的指针声明指向整型变量的指针IQ1IQ1和和IQ2IQ2 u u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第5页,共24页,编辑于2022年,星期六11.1 11.1 11.1 11.1 概述概述概述概述/指针状态指针状态指针状态指针状态11.1 11.1 概述概述
10、第十一章第十一章 指针与动态数据结构指针与动态数据结构u指针有三种状态指针有三种状态:未定义、空指针、被关联。未定义、空指针、被关联。未定义:程序在初始状态中未定义所有指针。未定义:程序在初始状态中未定义所有指针。空指针:指针已定义,但未成为目标变量别名。空指针:指针已定义,但未成为目标变量别名。被关联:指针已定义,已成为目标变量别名。被关联:指针已定义,已成为目标变量别名。u u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第6页,共24页,编辑于2022年,星期六11.1 11.1 11.1 11.1 概述概述概述概述/概述概述概
11、述概述/动态数据结构示例动态数据结构示例动态数据结构示例动态数据结构示例l静态数据结构静态数据结构:在编译时为其分配存储空间在编译时为其分配存储空间,大小不能改变。大小不能改变。l静态数据结构优点静态数据结构优点:分配算法简单分配算法简单,易于实现易于实现,使用方便。使用方便。l静态数据结构缺点静态数据结构缺点:易浪费存储空间易浪费存储空间,易产生下标越界错误。易产生下标越界错误。l动态数据结构动态数据结构:在运行时为其分配存储空间在运行时为其分配存储空间,大小可改变。大小可改变。l动态数据结构优点动态数据结构优点:可节约存储空间,灵活,应用广。可节约存储空间,灵活,应用广。l动态数据结构缺点
12、动态数据结构缺点:分配算法复杂分配算法复杂,实现难度大。实现难度大。象象链表、树结构、图结构链表、树结构、图结构等数据结构都适合用动态数据结构实现,等数据结构都适合用动态数据结构实现,指针是实现动态数据结构的有效手段。指针是实现动态数据结构的有效手段。指针和动态数据结构广泛应用于软件设计,熟练掌握和灵活应指针和动态数据结构广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。11.1 11.1 概述概述第二章第二章 FORTRAN90 FORTRAN90开发环境开发环境a a1 1a a2 2
13、a an n 链表链表树结构树结构图结构图结构u u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第7页,共24页,编辑于2022年,星期六11.1 11.1 11.1 11.1 概述概述概述概述/存储结构存储结构存储结构存储结构/示例示例示例示例u存储单元地址存储单元地址:存储单元在内存中的排列序号(编号)。存储单元在内存中的排列序号(编号)。u存储分配存储分配:系统为变量、数组、结构体、指针分配连续存储单元,用系统为变量、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存于存储有关数
14、据,其变量名、数组名、结构体名、指针名代表连续存储单元首地址。储单元首地址。u指针变量(指针)指针变量(指针):为其分配的存储单元用于保存其它变量、数组、结构为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构。体的地址。通过改变其所存储的地址内容实现动态数据结构。u示例:示例:INTEGER,TARGET :I=1255 INTEGER,TARGET :I=1255 REAL:R=534.45 REAL:R=534.45 CHARACTER*5:S=CHINA CHARACTER*5:S=CHINA INTEGER:A(3)=(/35,45,55
15、/)INTEGER:A(3)=(/35,45,55/)INTEGER,POINTER:P INTEGER,POINTER:P P=I P=I11.1 11.1 概述概述第十一章第十一章 指针与动态数据结构指针与动态数据结构 12551255534.45534.45CHINACHINA35354545555510001000整型变量整型变量I,I,地址地址1000,41000,4字节字节,值值12551255实型变量实型变量R,R,地址地址1004,41004,4字节字节,值值534.45534.45字符型变量字符型变量S,S,地址地址1008,51008,5字节字节,值值CHINACHINA整
16、型数组整型数组A,A,地址地址1013,121013,12字节字节,值值3535、4545、5555指针变量指针变量P,P,地址地址1025,41025,4字节字节,值为值为100010000 01 11000100010041004100810081013101310251025n n图图图图11-1 11-1 11-1 11-1 变量、数组、指针以及与地址的关系变量、数组、指针以及与地址的关系变量、数组、指针以及与地址的关系变量、数组、指针以及与地址的关系 u u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第8页,共24页,编辑
17、于2022年,星期六11.1 11.1 11.1 11.1 概述概述概述概述/访问方式访问方式访问方式访问方式/示例示例示例示例11.1 11.1 概述概述第十一章第十一章 指针与动态数据结构指针与动态数据结构u直接访问直接访问:直接访问存储单元中的内容。如对普通变量、数直接访问存储单元中的内容。如对普通变量、数组元素、结构体成员的访问,采用直接访问方式。如图组元素、结构体成员的访问,采用直接访问方式。如图11-11-2 2所示。所示。u间接访问间接访问:先从存储单元中得到被访问存储单元地址,然后先从存储单元中得到被访问存储单元地址,然后通过该地址访问被访问存储单元中的内容。如对指针变量通过该
18、地址访问被访问存储单元中的内容。如对指针变量的访问,采用间接访问方式。如图的访问,采用间接访问方式。如图11-311-3所示。所示。u指针变量存储单元中保存目标变量地址,通常用箭头表示。指针变量存储单元中保存目标变量地址,通常用箭头表示。F90F90指针保存目标变量名称,将指针看成目标变量的别名。指针保存目标变量名称,将指针看成目标变量的别名。u指针变量声明后指针变量声明后,未分配存储空间未分配存储空间,访问前需分配存储空间。访问前需分配存储空间。(示例示例)I I125125125125J J3753753*1253*125I=125I=125J=3*IJ=3*IP PI I12512512
19、5125J J3753753*1253*1253*P3*PI I地址地址I=125I=125P=IP=IJ=3*IJ=3*II I2525!例例11.1 11.1 使用指针实现两个整数交换使用指针实现两个整数交换INTEGER,TARGET:I,J INTEGER,TARGET:I,J !声明两个目标变量声明两个目标变量I I和和J JINTEGER,POINTER:P1,P2,P3 INTEGER,POINTER:P1,P2,P3!声明三个指针变量声明三个指针变量P1P1、P2P2和和P3P3I=25;J=35 I=25;J=35 !给目标变量给目标变量I I和和J J直接赋值直接赋值P1=
20、I;P2=JP1=I;P2=J !给指针分配指向给指针分配指向I I和和J J的存储空间的存储空间 PRINT*,PRINT*,未未交交换换数数据据:,P1,P2,P1,P2 !通通过过指指针针变变量量间间接接输输出出I I和和J J的的值值P3=P1;P1=P2;P2=P3 P3=P1;P1=P2;P2=P3 !交换指针交换指针P1P1和和P2P2指向的目标变量指向的目标变量PRINT*,PRINT*,已已交交换换数数据据:,P1,P2,P1,P2!通通过过指指针针变变量量间间接接输输出出J J和和I I的的值值ENDENDI I2525P1P1图图11-4 11-4 指针交换指针交换J J
21、3535P2P2J J3535P2P2P1P1P3P3交换前交换前交换后交换后u u 概述概述u u 存储结构存储结构u u 访问方式访问方式u u 指针声明指针声明u u 指针状态指针状态第9页,共24页,编辑于2022年,星期六11.2 11.2 11.2 11.2 指针引用和赋值指针引用和赋值指针引用和赋值指针引用和赋值/指针引用指针引用指针引用指针引用l指针引用:指针引用:引用指针所指目标变量。引用指针所指目标变量。11.2 11.2 指针引用和赋值指针引用和赋值第十一章第十一章 指针与动态数据结构指针与动态数据结构u u 指针引用指针引用u u 指针赋值指针赋值u u 结构体指针结构
22、体指针!例例11.211.2INTEGER,TARGET:R=25INTEGER,TARGET:R=25INTEGER,POINTER:PINTEGER,POINTER:PP=RP=RM=3*P-4M=3*P-4PRINT*,P,MPRINT*,P,MENDEND!结果:结果:2525,7171!例例11.311.3INTEGER,POINTERINTEGER,POINTER:P1,PP1,PINTEGER,TARGETINTEGER,TARGET:R=12R=12P=RP=RR=2*PR=2*PPRINT*,P,RPRINT*,P,RENDEND!结果:结果:2424,2424!例例11.4
23、11.4INTEGER,TARGETINTEGER,TARGET:R=13R=13INTEGER,POINTERINTEGER,POINTER:P1,P2P1,P2P1=RP1=RP2=P1P2=P1PRINT*,P1,P2,RPRINT*,P1,P2,RENDEND !结果:结果:1313,1313,1313第10页,共24页,编辑于2022年,星期六11.2 11.2 11.2 11.2 指针引用和赋值指针引用和赋值指针引用和赋值指针引用和赋值/指针赋值指针赋值指针赋值指针赋值l别名赋值:别名赋值:将目标变量名作为别名赋值给指针。将目标变量名作为别名赋值给指针。l数据赋值:数据赋值:将数据
24、表达式值赋值给指针所指目标变量。将数据表达式值赋值给指针所指目标变量。l一般格式:一般格式:=11.2 11.2 指针引用和赋值指针引用和赋值第十一章第十一章 指针与动态数据结构指针与动态数据结构!例例11.511.5INTEGR,TARGETINTEGR,TARGET:R1=25R1=25INTEGR,TARGETINTEGR,TARGET:R2=35R2=35INTEGER,POINTERINTEGER,POINTER:P1,P2P1,P2P1=R1P1=R1P2=R2P2=R2P1=P2P1=P2PRINT*,P1,P2PRINT*,P1,P2ENDEND!结果:结果:3535,3535
25、P1P1P1P1R1R12525R2R2P2P23535R1R13535R2R2P2P23535u u 指针引用指针引用u u 指针赋值指针赋值u u 结构体指针结构体指针第11页,共24页,编辑于2022年,星期六11.2 11.2 11.2 11.2 指针引用和赋值指针引用和赋值指针引用和赋值指针引用和赋值/结构体指针结构体指针结构体指针结构体指针11.2 11.2 指针引用和赋值指针引用和赋值第十一章第十一章 指针与动态数据结构指针与动态数据结构l结构体指针:结构体指针:指向结构体的指针。指针可为结构体别名。指向结构体的指针。指针可为结构体别名。例:例:TYPE date_recordT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指针与动态数据结构 2幻灯片 指针 动态 数据结构 幻灯片
限制150内