fortran指针与动态数据结构.ppt
《fortran指针与动态数据结构.ppt》由会员分享,可在线阅读,更多相关《fortran指针与动态数据结构.ppt(37页珍藏版)》请在三一办公上搜索。
1、1.概述 2.指针引用与赋值 3.整型指针 4.与指针相关的函数和语句 5.指针数组 6.动态链表,第十一讲 指针与动态数据结构,第十一讲 指针与动态数据结构,11.1 概述/概述,静态数据结构:在编译时为其分配存储空间,大小不能改变。静态数据结构优点:分配算法简单,易于实现,使用方便。静态数据结构缺点:易浪费存储空间,易产生下标越界错误。动态数据结构:在运行时为其分配存储空间,大小可改变。动态数据结构优点:可节约存储空间,灵活,应用广。动态数据结构缺点:分配算法复杂,实现难度大。象链表、树结构、图结构等数据结构都适合用动态数据结构实现,指针是实现动态数据结构的有效手段。指针和动态数据结构广泛
2、应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。,11.1 概述,第十一讲 指针与动态数据结构,概述 存储结构 访问方式 指针声明 指针状态,11.1 概述/概述/动态数据结构示例,静态数据结构:在编译时为其分配存储空间,大小不能改变。静态数据结构优点:分配算法简单,易于实现,使用方便。静态数据结构缺点:易浪费存储空间,易产生下标越界错误。动态数据结构:在运行时为其分配存储空间,大小可改变。动态数据结构优点:可节约存储空间,灵活,应用广。动态数据结构缺点:分配算法复杂,实现难度大。象链表、树结构、图结构等数据结构都适合用动态数据结构实现,指针是实现动
3、态数据结构的有效手段。指针和动态数据结构广泛应用于软件设计,熟练掌握和灵活应用指针和动态数据结构求解问题,可使程序更加简洁、紧凑、高效。,11.1 概述,概述 存储结构 访问方式 指针声明 指针状态,第十一讲 指针与动态数据结构,11.1 概述/存储结构,存储单元地址:存储单元在内存中的排列序号(编号)。存储分配:系统为变量、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存储单元首地址。指针变量(指针):为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构。示例:INTEGER,TARGET:I=1
4、255 REAL:R=534.45 CHARACTER*5:S=CHINA INTEGER:A(3)=(/35,45,55/)INTEGER,POINTER:P P=I,11.1 概述,第十一讲 指针与动态数据结构,概述 存储结构 访问方式 指针声明 指针状态,11.1 概述/存储结构/示例,存储单元地址:存储单元在内存中的排列序号(编号)。存储分配:系统为变量、数组、结构体、指针分配连续存储单元,用于存储有关数据,其变量名、数组名、结构体名、指针名代表连续存储单元首地址。指针变量(指针):为其分配的存储单元用于保存其它变量、数组、结构体的地址。通过改变其所存储的地址内容实现动态数据结构。示例
5、:INTEGER,TARGET:I=1255 REAL:R=534.45 CHARACTER*5:S=CHINA INTEGER:A(3)=(/35,45,55/)INTEGER,POINTER:P P=I,11.1 概述,第十一讲 指针与动态数据结构,概述 存储结构 访问方式 指针声明 指针状态,11.1 概述/访问方式,11.1 概述,第十一讲 指针与动态数据结构,概述 存储结构 访问方式 指针声明 指针状态,11.1 概述/访问方式/示例,11.1 概述,第十一讲 指针与动态数据结构,概述 存储结构 访问方式 指针声明 指针状态,11.1 概述/指针声明,11.1 概述,第十一讲 指针与
6、动态数据结构,POINTER属性:通过POINTER属性声明指针变量。TARGET属性:通过TARGET属性声明指针可指的目标变量。一般格式:,POINTER:,或 POINTER,例:REAL Q1,Q2 INTEGER,POINTER:P1,P2!声明指向整型变量的指针P1和P2 POINTER Q1!声明指向实型变量的指针Q1 POINTER IQ1,IQ2!声明指向整型变量的指针IQ1和IQ2,概述 存储结构 访问方式 指针声明 指针状态,11.1 概述/指针状态,11.1 概述,第十一讲 指针与动态数据结构,指针有三种状态:未定义、空指针、被关联。未定义:程序在初始状态中未定义所有指
7、针。空指针:指针已定义,但未成为目标变量别名。被关联:指针已定义,已成为目标变量别名。,概述 存储结构 访问方式 指针声明 指针状态,11.2 指针引用和赋值/指针引用,指针引用:引用指针所指目标变量。,11.2 指针引用和赋值,第十一讲 指针与动态数据结构,指针引用 指针赋值 结构体指针,!例11.2INTEGER,TARGET:R=25INTEGER,POINTER:PP=RM=3*P-4WRITE(*,*)P,MEND!结果:25,71,!例11.3INTEGER,POINTER:P1,PINTEGER,TARGET:R=12P=RR=2*PWRITE(*,*)P,REND!结果:24,
8、24,!例11.4INTEGER,TARGET:R=13INTEGER,POINTER:P1,P2P1=RP2=P1WRITE(*,*)P1,P2,R END!结果:13,13,13,11.2 指针引用和赋值/指针赋值,别名赋值:将目标变量名作为别名赋值给指针。数据赋值:将数据表达式值赋值给指针所指目标变量。一般格式:=,11.2 指针引用和赋值,第十一讲 指针与动态数据结构,!例11.5INTEGER,TARGET:R1=25INTEGER,TARGET:R2=35INTEGER,POINTER:P1,P2P1=R1P2=R2P1=P2WRITE(*,*)P1,P2END!结果:35,35,
9、指针引用 指针赋值 结构体指针,11.2 指针引用和赋值/结构体指针,11.2 指针引用和赋值,第十一讲 指针与动态数据结构,指针引用 指针赋值 结构体指针,11.3 整型指针/概述,整型指针:地址按4字节整数对待的指针。整型指针可参与整数运算。整型指针组成:指针、基变量、目标对象。创建指针步骤:第一步:将一个指针基变量链接在一个整型指针上。POINTER(,)第二步:将目标对象地址赋值给整型指针。=LOC()=MALLOC()标准函数LOC功能:获得目标对象起始内存地址。标准函数MALLOC功能:计算表达式值n,分配n个字节存储单元,获得存储单元起始地址。(示例),11.3 整型指针,第十一
10、讲 指针与动态数据结构,概述 例11.6 例11.7,11.3 整型指针/概述/示例,整型指针:地址按4字节整数对待的指针。整型指针可参与整数运算。整型指针组成:指针、基变量、目标对象。创建指针步骤:第一步:将一个指针基变量链接在一个整型指针上。POINTER(,)第二步:将目标对象地址赋值给整型指针。=LOC()=MALLOC()标准函数LOC功能:获得目标对象起始内存地址。标准函数MALLOC功能:计算表达式值n,分配n个字节存储单元,获得存储单元起始地址。(示例),11.3 概述,第十一讲 指针与动态数据结构,概述 例11.6 例11.7,INTEGER:I,J=20POINTER(P,
11、I)!建立指针基变量I和目标对象J的等价关系P=LOC(J)!将目标对象J的地址赋予整型指针变量PWRITE(*,*)P,I,J!输出结果为:4442932 20 20I=30WRITE(*,*)P,I,J!输出结果为:4442932 30 30J=40WRITE(*,*)P,I,J!输出结果为:4442932 40 40END,11.3 整型指针/例11.6,分析下面程序 REAL A(10),B(5)POINTER(P,B)P=LOC(A)A(2)=125.0!等价于设置B(2)为125.0 WRITE(*,*)B(2)END通过POINTER语句,将指针基数组B与目标对象数组A建立联系,
12、即指针P中存放的数组A的起始地址就是数组B的起始地址,所以运行程序后,输出B(2)的值为125.0。,11.3 整型指针,第十一讲 指针与动态数据结构,概述 例11.6 例11.7,11.3 整型指针/例11.7,分析下面程序 INTEGER:A(5),B POINTER(P,B)P=LOC(A)DO I=1,5 B=I*10 P=P+4 ENDDO WRITE(*,*)A END!输出结果为:10 20 30 40 50 通过指针运算和指针基变量B的赋值操作,生成数组A的5个元素值。通过指针运算和指针基变量B的赋值操作,生成数组A的5个元素值。整型指针P增加4,相当于把数组的下标加1。,11
13、.3 整型指针,第十一讲 指针与动态数据结构,概述 例11.6 例11.7,11.4与指针相关的函数和语句/NULLIFY,NULLIFY:将指针设置为空状态。空状态可用标准函数ASSOCIATED进行检测。指针声明后,一般应将其设置为空状态。如:INTEGER,POINTER:P NULLIFY(P),11.4 与指针相关的函数和语句,第十一讲 指针与动态数据结构,NULLIFY ASSOCIATED ALLOCATE DEALLOCATE,11.4与指针相关的函数和语句/ASSOCIATED,ASSOCIATED:判定是否有目标对象与指针链接。如:REAL A1(:),A2(:),A3(5
14、)POINTER A1,A2 TARGET A3 LOGICAL S1,S2,S3 A1=A3!指针赋值 A2=A3!指针赋值 S1=ASSOCIATED(A1)!结果TRUE;指针A1已指向目标变量 S2=ASSOCIATED(A1,A3)!结果TRUE;A1已指向A3 S3=ASSOCIATED(A1,A2)!结果TRUE;A1和A2都指向A3,11.4 与指针相关的函数和语句,第十一讲 指针与动态数据结构,NULLIFY ASSOCIATED ALLOCATE DEALLOCATE,11.4与指针相关的函数和语句/ALLOCATE,ALLOCATE:为指针分配所指向的存储空间。如:REA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran 指针 动态 数据结构

链接地址:https://www.31ppt.com/p-5431285.html