资源描述:
《指针与动态数据结构课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.概述2.指针引用与赋值3.整型指针4.与指针相关的函数和语句5.指针数组6.动态链表7.习题十一第十一章指针与动态数据结构7《FORTRAN90程序设计》课多媒体课件11.1概述/概述静态数据结构:在编译时为其分配存储空间,大小不能改变。静态数据结构优点:分配算法简单,易于实现,使用方便。静态数据结构缺点:易浪费存储空间,易产生下标越界错误。动态数据结构:在运行时为其分配存储空间,大小可改变。动态数据结构优点:可节约存储空间,灵活,应用广。动态数据结构缺点:分配算法复杂,实现难度大。象链表、树结构、图结构等数据结构都适合用动态数据结构实现
2、,指针是实现动态数据结构的有效手段。指针和动态数据结构广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。11.1概述第十一章指针与动态数据结构概述存储结构访问方式指针声明指针状态11.1概述/存储结构存储单元地址:存储单元在内存中的排列序号(编号)。存储分配:系统为变量、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存储单元首地址。指针变量(指针):为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构。
3、示例:INTEGER,TARGET::I=1255REAL::R=534.45CHARACTER*5::S='CHINA‘INTEGER::A(3)=(/35,45,55/)INTEGER,POINTER::PP=>I11.1概述第十一章指针与动态数据结构概述存储结构访问方式指针声明指针状态11.1概述/访问方式11.1概述第十一章指针与动态数据结构直接访问:直接访问存储单元中的内容。如对普通变量、数组元素、结构体成员的访问,采用直接访问方式。如图11-2所示。间接访问:先从存储单元中得到被访问存储单元地址,然后通过该地址访问被访问存储单元中
4、的内容。如对指针变量的访问,采用间接访问方式。如图11-3所示。指针变量存储单元中保存目标变量地址,通常用箭头表示。F90指针保存目标变量名称,将指针看成目标变量的别名。指针变量声明后,未分配存储空间,访问前需分配存储空间。(示例)I125125J3753*125I=125J=3*IPI125125J3753*1253*PI地址I=125P=>IJ=3*I概述存储结构访问方式指针声明指针状态11.1概述/指针声明11.1概述第十一章指针与动态数据结构POINTER属性:通过POINTER属性声明指针变量。TARGET属性:通过TARGET属性
5、声明指针可指的目标变量。一般格式:<类型描述>,POINTER[::]<指针变量名>{,<指针变量名>}或POINTER<指针变量名>{,<指针变量名>}例:REALQ1,Q2INTEGER,POINTER::P1,P2!声明指向整型变量的指针P1和P2POINTERQ1!声明指向实型变量的指针Q1POINTERIQ1,IQ2!声明指向整型变量的指针IQ1和IQ2概述存储结构访问方式指针声明指针状态11.1概述/指针状态11.1概述第十一章指针与动态数据结构指针有三种状态:未定义、空指针、被关联。未定义:程序在初始状态中未定义所有指针。空指针
6、:指针已定义,但未成为目标变量别名。被关联:指针已定义,已成为目标变量别名。概述存储结构访问方式指针声明指针状态11.1概述/概述/动态数据结构示例静态数据结构:在编译时为其分配存储空间,大小不能改变。静态数据结构优点:分配算法简单,易于实现,使用方便。静态数据结构缺点:易浪费存储空间,易产生下标越界错误。动态数据结构:在运行时为其分配存储空间,大小可改变。动态数据结构优点:可节约存储空间,灵活,应用广。动态数据结构缺点:分配算法复杂,实现难度大。象链表、树结构、图结构等数据结构都适合用动态数据结构实现,指针是实现动态数据结构的有效手段。指针
7、和动态数据结构广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。11.1概述第二章FORTRAN90开发环境a1a2an链表树结构图结构概述存储结构访问方式指针声明指针状态11.1概述/存储结构/示例存储单元地址:存储单元在内存中的排列序号(编号)。存储分配:系统为变量、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存储单元首地址。指针变量(指针):为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构
8、。示例:INTEGER,TARGET::I=1255REAL::R=534.45CHARACTER*5::S='CHINA‘INTEGER::A(3)=(/35,4