- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 指针 ;二、指针变量的使用 ;P193 例10.2 指针变量示例2
INTEGER, POINTER::P1, P2, P3, P4
INTEGER,TARGET:: X1, X2
INTEGER X, S1, S2, S3, S4, S5
READ*, X1, X2
X=X1*X2
P1=X1
P2=X2
P3=X1 ! 多个指针变量可以指向同一目标变量
P4=P1 ! P4指向X1
S1=P1*P2
S2=P3*P2
S3=P1*X2
S4=P3*X2
S5=P4*X2
PRINT*, X=, X;PRINT*,S1=, S1
PRINT*,S2=, S2
PRINT*,S3=, S3
PRINT*,S4=, S4
PRINT*,S5=, S5
END
输入:3 4
输出:X=12
S1=12
S2=12
S3=12
S4=12
S5=12;10.2 动态变量 ;P195 例10.4 ALLOCATE和DEALLOCATE函数的用法:?
PROGRAM POINTER4?
INTEGER,POINTER::P1,P2 !定义指针变量P1、P2
INTEGER S
ALLOCATE(P1,P2) !用ALLOCATE函数为P1,P2分配空间
READ*,P1,P2
S=P1+P2
DEALLOCATE(P1,P2) !用DEALLOCATE函数释放空间
PRINT*,S=,S
END
输入5 6
输出S=11
;10.3 指针与数组 ;例:
REAL, DIMENSION(:), POINTER :: X
!声明指向一维实型数组的指针X
ALLOCATE(X(20)) !为X数组分配20个单元的存储空间;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;10.4 指针与链表 ; ;P198 例:
TYPE STUDENTNODE
CHARACTER (15) NAME
INTEGER NUM
LOGICAL SEX
CHARACTER (30) ADDRESS
TYPE (STUDENTNODE), POINTER :: NEXT
END TYPE;二、链表的基本操作;program ex_6
implicit none
type :: node
integer :: value
type (node),pointer :: next
end type node
!链表的建立,以0作为建表结束
type(node),pointer :: current , L
integer :: num
read(*,*) num
NULLIFY( L )!L指向一个空对象
allocate(current)
current%value=num
L=current;注意:链表有一个表头和一个表尾,由于FORTRAN语言中指针实际上就是一个别名,不同于C语言中的指针(C中的指针代表内存地址),因此没有明确的空指针的概念,链表的访问方式只能从最后一个结点开始,到第一个结点,通过检查链表是否再被连接作为结束标识,例10.6所建链表过程如下图所示。
文档评论(0)