Fortran指针PPT课件

上传人:cl****1 文档编号:590547399 上传时间:2024-09-14 格式:PPT 页数:15 大小:192KB
返回 下载 相关 举报
Fortran指针PPT课件_第1页
第1页 / 共15页
Fortran指针PPT课件_第2页
第2页 / 共15页
Fortran指针PPT课件_第3页
第3页 / 共15页
Fortran指针PPT课件_第4页
第4页 / 共15页
Fortran指针PPT课件_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《Fortran指针PPT课件》由会员分享,可在线阅读,更多相关《Fortran指针PPT课件(15页珍藏版)》请在金锄头文库上搜索。

1、第十章第十章 指针指针 10.1 10.1 指针的定义与使用指针的定义与使用实质:给一个变量起一个别名实质:给一个变量起一个别名一、一、 指针变量的定义格式指针变量的定义格式类型型说明,它表示明,它表示该指指针所指的目所指的目标变量量类型。型。POINTERPOINTER为指指针定定义的关的关键字。字。类型说明类型说明,POINTER:指针变量名指针变量名1,指针变量名指针变量名2,例如例如:INTEGER,POINTER:A1,A2可以将类型说明与指针说明分开,例如:可以将类型说明与指针说明分开,例如:INTEGERA1,A2POINTERA1,A2指指针变量与目量与目标变量的量的类型型应当

2、当严格一致格一致二、指针变量的使用二、指针变量的使用 P192P192例例10.110.1指指针变量示例量示例1 1PROGRAMPOINTER1INTEGER,POINTER:P! !定定义指指针变量量P PINTEGER,TARGET:X! !定定义整型整型变量量X XREAD*,XP=X! !使使P P指向指向X X,这时两者两者实际上是同一个上是同一个变量量PRINT*,X=,XPRINT*,P=,PEND输入输入3输出结果为:输出结果为:X=3P=3格式:指针变量格式:指针变量=目标变量或者另一指针变量。目标变量或者另一指针变量。P193P193例例10.210.2指指针变量示例量示

3、例2 2INTEGER,POINTER:P1,P2,P3,P4INTEGER,TARGET:X1,X2INTEGERX,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输入:输入:34输出:输出:X=12S1=12S2=

4、12S3=12S4=12S5=1210.2 10.2 动态变量动态变量 方法:先定方法:先定义指指针,再利用,再利用ALLOCATE(P)ALLOCATE(P)函数函数为其其动态分配空分配空间,其中,其中P P为指指针变量。量。释放存储单元函数:释放存储单元函数:DEALLOCATE动态分配存储单元函数:动态分配存储单元函数:ALLOCATEP195P195例例10.4ALLOCATE10.4ALLOCATE和和DEALLOCATEDEALLOCATE函数的用法:函数的用法: PROGRAMPOINTER4INTEGER,POINTER:P1,P2! !定定义指指针变量量P1P1、P2P2IN

5、TEGERSALLOCATE(P1,P2)! !用用ALLOCATEALLOCATE函数函数为P1,P2P1,P2分配空分配空间READ*,P1,P2S=P1+P2DEALLOCATE(P1,P2)! !用用DEALLOCATEDEALLOCATE函数函数释放空放空间PRINT*,S=,SEND输入输入56输出输出S=1110.3 10.3 指针与数组指针与数组 利用指利用指针来指向一个数来指向一个数组,能,能动态地分配数地分配数组空空间,给编程程带来极大的方便。通来极大的方便。通过动态定定义,可,可以根据当以根据当时使用空使用空间的大小来生成空的大小来生成空间,使数,使数组大大小小满足要求。

6、足要求。一、指针数组的定义一、指针数组的定义格式:格式:类型说明,类型说明,DIMENSION(:),POINTER:指针名指针名DIMENSION(:):数数组的的动态说明明标识,不指定数,不指定数组下下标界限界限“:”个数个数=数数组维数数POINTER:指指针说明明标识。例:例:REAL,DIMENSION(:),POINTER:X! !声明指向一声明指向一维实型数型数组的指的指针X XALLOCATE(X(20)! !为X X数数组分配分配2020个个单元的存元的存储空空间P197P197例例10.510.5输入任意两个数,将它入任意两个数,将它们及四及四则运算运算结果存果存储起来后起

7、来后输出。出。分析:可以利用指分析:可以利用指针,定,定义一个一个动态数数组X X,用来存,用来存放放输入的数据和入的数据和计算的算的结果,果,该数数组的空的空间大小可大小可以根据要存以根据要存储的数据个数的数据个数动态分配。分配。REAL,DIMENSION(:),POINTER:XREAD*,A,BC=A+B;D=A-B;E=A*BIF(B.NE.0)THENF=A/BELSEF=0ENDIFALLOCATE(X(6)X(1)=A;X(2)=B;X(3)=CX(4)=D;X(5)=E;X(6)=FWRITE(*,100)X100 FORMAT(1X,3F8.2)DEALLOCATE(X)E

8、ND输入输入36,输出:,输出:10.4 10.4 指针与链表指针与链表 在在链式存式存储中,每一个中,每一个结点除了存点除了存储自己的信息以外,自己的信息以外,还保留下一个保留下一个值,用来,用来访问下一个下一个变量,量,这个个值称称为指指针,下面,下面介介绍如何使用如何使用链表。表。一、结点的定义一、结点的定义最最简单的的结点是普通数点是普通数组的元素,如有以下定的元素,如有以下定义:INTEGERA(10)INTEGERA(10)则A(1)A(1)、A(2)A(2)、A(3)A(3)、A(4)A(4)等,可以看作等,可以看作结点。点。复复杂的的结点包含多种点包含多种类型的数据,一般定型的

9、数据,一般定义为一一个个结构体。构体。 下面是一个链表结点结构体的定义:下面是一个链表结点结构体的定义:TYPENODEINTEGERVALUE! !数据本身数据本身TYPE(NODE),POINTER:NEXT!指向下一个!指向下一个结点的指点的指针NEXTNEXTENDTYPENODEVALUENEXTP198例:例:TYPESTUDENTNODECHARACTER(15)NAMEINTEGERNUMLOGICALSEXCHARACTER(30)ADDRESSTYPE(STUDENTNODE),POINTER:NEXTENDTYPE二、链表的基本操作二、链表的基本操作链表的基本操作:建表、

10、插入、表的基本操作:建表、插入、删除、除、查找、更新、遍找、更新、遍历等。等。P198例例10.6建立一个链表,并输出建表后的结果。建立一个链表,并输出建表后的结果。programex_6implicitnonetype:nodeinteger:valuetype(node),pointer:nextendtypenode!链表的建立,以表的建立,以0 0作作为建表建表结束束type(node),pointer:current,Linteger:numread(*,*)numNULLIFY(L)!L)!L指向一个空指向一个空对象象allocate(current)current%value=n

11、umL=currentdowhile(num/=0)read(*,*)numif(num/=0)thenallocate(current)current%value=numcurrent%next=LL=currentendifenddocurrent=L!链表的表的输出出过程程write(*,*)current%valuecurrent=current%nextdowhile(associated(current)write(*,*)current%valuecurrent=current%nextenddoendprogramex_6AssociatedAssociated是是fortra

12、n90fortran90提供的内部函提供的内部函数,其作用是判断参数是否是关数,其作用是判断参数是否是关联状状态,也就是指也就是指针是否已是否已经作作为其他其他对象的象的别名。名。注意:注意:链表有一个表表有一个表头和一个表尾,由于和一个表尾,由于FORTRANFORTRAN语言中言中指指针实际上就是一个上就是一个别名,不同于名,不同于C C语言中的指言中的指针(C C中的中的指指针代表内存地址),因此没有明确的空指代表内存地址),因此没有明确的空指针的概念,的概念,链表的表的访问方式只能从最后一个方式只能从最后一个结点开始,到第一个点开始,到第一个结点,点,通通过检查链表是否再被表是否再被连接作接作为结束束标识,例所建,例所建链表表过程如下程如下图所示。所示。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号