Fortran指针PPT课件

上传人:仙*** 文档编号:181874899 上传时间:2023-01-18 格式:PPT 页数:15 大小:192KB
返回 下载 相关 举报
Fortran指针PPT课件_第1页
第1页 / 共15页
Fortran指针PPT课件_第2页
第2页 / 共15页
Fortran指针PPT课件_第3页
第3页 / 共15页
点击查看更多>>
资源描述
第十章第十章 指针指针 10.1 10.1 指针的定义与使用指针的定义与使用实质:给一个变量起一个别名实质:给一个变量起一个别名一、一、指针变量的定义格式指针变量的定义格式类型说明,它表示该指针所指的目标变量类型。类型说明,它表示该指针所指的目标变量类型。POINTERPOINTER为指针定义的关键字。为指针定义的关键字。类型说明类型说明,POINTER:指针变量名指针变量名1,指针变量名指针变量名2,例如例如:INTEGER,POINTER:A1,A2可以将类型说明与指针说明分开,例如:可以将类型说明与指针说明分开,例如:INTEGER A1,A2POINTER A1,A2指针变量与目标变量的类型应当严格一致指针变量与目标变量的类型应当严格一致二、指针变量的使用二、指针变量的使用 P192 P192 例例10.1 10.1 指针变量示例指针变量示例1 1PROGRAM POINTER1 INTEGER,POINTER:P !定义指针变量定义指针变量P P INTEGER,TARGET:X !定义整型变量定义整型变量X X READ*,X P=X !使使P P指向指向X X,这时两者实际上是同一个变量,这时两者实际上是同一个变量 PRINT*,X=,X PRINT*,P=,PEND输入输入3输出结果为:输出结果为:X=3 P=3格式:指针变量格式:指针变量=目标变量或者另一指针变量。目标变量或者另一指针变量。P193 P193 例例10.2 10.2 指针变量示例指针变量示例2 2INTEGER,POINTER:P1,P2,P3,P4INTEGER,TARGET:X1,X2INTEGER X,S1,S2,S3,S4,S5READ*,X1,X2X=X1*X2P1=X1P2=X2P3=X1 !多个指针变量可以指向同一目标变量多个指针变量可以指向同一目标变量P4=P1 !P4!P4指向指向X1X1S1=P1*P2S2=P3*P2S3=P1*X2S4=P3*X2S5=P4*X2PRINT*,X=,XPRINT*,S1=,S1PRINT*,S2=,S2PRINT*,S3=,S3PRINT*,S4=,S4PRINT*,S5=,S5END输入:输入:3 4输出:输出:X=12 S1=12 S2=12 S3=12 S4=12 S5=1210.2 10.2 动态变量动态变量 方法:先定义指针,再利用方法:先定义指针,再利用ALLOCATE(P)ALLOCATE(P)函数为其动函数为其动态分配空间,其中态分配空间,其中P P为指针变量。为指针变量。释放存储单元函数:释放存储单元函数:DEALLOCATE动态分配存储单元函数:动态分配存储单元函数:ALLOCATEP195 P195 例例10.4 ALLOCATE10.4 ALLOCATE和和DEALLOCATEDEALLOCATE函数的用法:函数的用法:PROGRAM POINTER4 INTEGER,POINTER:P1,P2!定义指针变量定义指针变量P1P1、P2P2 INTEGER S ALLOCATE(P1,P2)!用用ALLOCATEALLOCATE函数为函数为P1,P2P1,P2分配空间分配空间 READ*,P1,P2 S=P1+P2 DEALLOCATE(P1,P2)!用用DEALLOCATEDEALLOCATE函数释放空间函数释放空间 PRINT*,S=,SEND输入输入5 6输出输出S=11 10.3 10.3 指针与数组指针与数组 利用指针来指向一个数组,能动态地分配数组利用指针来指向一个数组,能动态地分配数组空间,给编程带来极大的方便。通过动态定义,可空间,给编程带来极大的方便。通过动态定义,可以根据当时使用空间的大小来生成空间,使数组大以根据当时使用空间的大小来生成空间,使数组大小满足要求。小满足要求。一、指针数组的定义一、指针数组的定义格式:格式:类型说明,类型说明,DIMENSION(:),POINTER:指针名指针名DIMENSION(:):数组的动态说明标识,不指定数组下标界限数组的动态说明标识,不指定数组下标界限“:”个数个数=数组维数数组维数POINTER:指针说明标识指针说明标识。例:例:REAL,DIMENSION(:),POINTER:X !声明指向一维实型数组的指针声明指向一维实型数组的指针X XALLOCATE(X(20)!为为X X数组分配数组分配2020个单元的存储空间个单元的存储空间P197 P197 例例10.5 10.5 输入任意两个数,将它们及四则运算输入任意两个数,将它们及四则运算结果存储起来后输出。结果存储起来后输出。分析:可以利用指针,定义一个动态数组分析:可以利用指针,定义一个动态数组X X,用来存,用来存放输入的数据和计算的结果,该数组的空间大小可放输入的数据和计算的结果,该数组的空间大小可以根据要存储的数据个数动态分配。以根据要存储的数据个数动态分配。REAL,DIMENSION(:),POINTER:X READ*,A,B C=A+B;D=A-B;E=A*B IF(B.NE.0)THEN F=A/B ELSE F=0 ENDIF ALLOCATE(X(6)X(1)=A;X(2)=B;X(3)=C X(4)=D;X(5)=E;X(6)=F WRITE(*,100)X 100 FORMAT(1X,3F8.2)DEALLOCATE(X)END输入输入3 6,输出:,输出:10.4 10.4 指针与链表指针与链表 在链式存储中,每一个结点除了存储自己的信息以外,还在链式存储中,每一个结点除了存储自己的信息以外,还保留下一个值,用来访问下一个变量,这个值称为指针,下面保留下一个值,用来访问下一个变量,这个值称为指针,下面介绍如何使用链表。介绍如何使用链表。一、结点的定义一、结点的定义最简单的结点是普通数组的元素,如有以下定义:最简单的结点是普通数组的元素,如有以下定义:INTEGER A(10)INTEGER A(10)则则A(1)A(1)、A(2)A(2)、A(3)A(3)、A(4)A(4)等,可以看作结点。等,可以看作结点。复杂的结点包含多种类型的数据,一般定义为一复杂的结点包含多种类型的数据,一般定义为一个结构体。个结构体。下面是一个链表结点结构体的定义:下面是一个链表结点结构体的定义:TYPE NODE INTEGER VALUE !数据本身数据本身 TYPE(NODE),POINTER:NEXT !指向下一个结点的指针!指向下一个结点的指针NEXTNEXTEND TYPE NODEVALUENEXTP198 例:例:TYPE STUDENTNODE CHARACTER(15)NAME INTEGER NUM LOGICAL SEX CHARACTER(30)ADDRESS TYPE (STUDENTNODE),POINTER:NEXTEND TYPE二、链表的基本操作二、链表的基本操作链表的基本操作:建表、插入、删除、查找、更新、遍历等。链表的基本操作:建表、插入、删除、查找、更新、遍历等。P198 例例10.6 建立一个链表,并输出建表后的结果。建立一个链表,并输出建表后的结果。program ex_6implicit none type:nodeinteger:valuetype(node),pointer:nextend type node!链表的建立,以!链表的建立,以0 0作为建表结束作为建表结束type(node),pointer:current,Linteger:numread(*,*)numNULLIFY(L)!L)!L指向一个空对象指向一个空对象allocate(current)current%value=numL=currentdo while(num/=0)read(*,*)num if(num/=0)then allocate(current)current%value=num current%next=L L=current end ifend do current=L !链表的输出过程链表的输出过程write(*,*)current%valuecurrent=current%nextdo while(associated(current)write(*,*)current%valuecurrent=current%nextend doend program ex_6AssociatedAssociated是是fortran90fortran90提供的内部函提供的内部函数,其作用是判断参数是否是关联状态,数,其作用是判断参数是否是关联状态,也就是指针是否已经作为其他对象的别也就是指针是否已经作为其他对象的别名。名。注意:链表有一个表头和一个表尾,由于注意:链表有一个表头和一个表尾,由于FORTRANFORTRAN语言中语言中指针实际上就是一个别名,不同于指针实际上就是一个别名,不同于C C语言中的指针(语言中的指针(C C中的中的指针代表内存地址),因此没有明确的空指针的概念,链指针代表内存地址),因此没有明确的空指针的概念,链表的访问方式只能从最后一个结点开始,到第一个结点,表的访问方式只能从最后一个结点开始,到第一个结点,通过检查链表是否再被连接作为结束标识,例所建链表过通过检查链表是否再被连接作为结束标识,例所建链表过程如下图所示。程如下图所示。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!