FORTRAN90第十章指针与递归

FORTRAN90第十章指针与递归

ID:38561187

大小:209.50 KB

页数:38页

时间:2019-06-14

FORTRAN90第十章指针与递归_第1页
FORTRAN90第十章指针与递归_第2页
FORTRAN90第十章指针与递归_第3页
FORTRAN90第十章指针与递归_第4页
FORTRAN90第十章指针与递归_第5页
资源描述:

《FORTRAN90第十章指针与递归》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、§10指针与递归§10.1指针的概念§10.2指针的使用§10.3指针数组§10.4链表§10.5递归及其应用§10.1指针的概念指针变量的定义格式:类型,Pointer[::]变量名列表或者分两步定义:类型[::]变量名列表Pointer变量名列表指针变量的类型与它的目标变量的类型必须一致。指针变量所指向的变量称为目标变量,简称为目标。对目标变量的定义必须用target属性:类型,target[::]变量名列表§10.1指针的概念指针赋值语句:指针变量=>目标变量赋值号=>读作“指向”,注意它的写法。同类型的指针变量可相互赋值指针变量=>指针变量指针变量通过指针赋

2、值语句指向目标变量之后,使用目标变量和使用它的指针是等同的。这两者之间的暂时等同关系直到用指针赋值语句使指针变量指向另外的目标变量为止。§10.1指针的概念例:Real,pointer::p1,p2!p1,p2可指向实型目标变量。Real,target::x,y!实型目标变量P1=>x;p2=>y!指针赋值语句X=-0.618!P1=-0.618P2=1.414!Y=1.414例:Real,Dimension(:),pointer::p!p可指向有target属性的一维实型数组(包括二维数组的一行或一列)。Real,target::a(5,6)!实型目标数组P=>A

3、(2,:)!指针赋值语句p=1!赋值语句,使A数组第2行元素全为1例:Real,pointer::p1,p2Real,target::r=13P1=>rP2=>p1Prinr*,p1,p2,rendReal,pointer::p1,p2Real,target::r1=13Real,target::r2=15Print*,r1,r2P1=>r1;p2=>r2Print*,p1,p2P1=p2Print*,p1,p2,r1,r2r2=2*r2P2=>p1Print*,p1,p2,r1,r2end说明:(1)指针变量通过指针赋值语句指向目标变量之后,便成为所指向目标的别名

4、。(2)对于一个指针变量的访问,实际上就是对其目标变量的访问。(3)可以有多个指针同时指向同一个目标变量,如:P1=>R,P2=>R。但不可能一个指针同时指向多个目标变量。(4)指针赋值可以改变当前的别名。例如:p2=>p1使p2指向p1所指向的目标。§10.2指针的使用指针处于三种状态之一:未定义:程序刚开始时所有指针都未定义空指针:已定义但没有指向任何目标关联:指针已定义并指向某一目标NULLIFY语句的作用是使指针变量处于空状态。其格式为:NULLIFY(p)P是指针变量§10.2.1指针的状态§10.2.2NULLIFY语句§10.2指针的使用例:Real,

5、Pointer::p1,p2Real,Target::aP1=>a;p2=>a!p1,p2都指向aNULLIFY(p1)!p1为空,p2指向aP2=>p1!p1与p2都为空指针用Allocate分配一块内存,并使指针变量指向它,指针变量就成了这块内存的别名。这就是动态变量。Allocate语句的格式:Allocate(p[,Stat=整型变量名])P必须已定义,整型变量表明分配是否成功,分配成功,整型变量被赋值0,否则赋非0值。§10.2.3动态变量§10.2指针的使用例:Real,Pointer::pAllocate(p)!给指针p分配内存用DeAllocate语

6、句可以释放已分配给某指针变量的内存,并使该指针变量置空。其格式为:DeAllocate(p[,Stat=整型变量名])例:Real,Pointer::pAllocate(p)!给指针p分配内存P=13;print*,pDeAllocate(p)!释放指针p的内存End§10.2指针的使用例:Real,Pointer::p1(:)Real,Allocatable,Target::p2(:,:)Allocate(p1(1:8),stat=I)!给指针p1分配内存If(I==0)print*,'P1分配成功'P1=2.5;print"(1x,8f8.1)",p1Alloc

7、ate(p2(1:8,1:3),stat=I)!给数组p2分配内存If(I==0)print*,"P2分配成功"P2=1.5;p2(1:8:2,2)=6.8;write(*,"(1x,8f8.1)")p2P1=>p2(2:7,2);print"(//1x,8f8.1)",p1Nullify(p1)Deallocate(p2,stat=i)If(I==0)write(*,"(/1x,A)")"P2释放成功"End例:ImplicitnoneTypestudentinteger::numreal::scoretype(student),pointer::nextEn

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。