| 
 
	积分622贡献 精华在线时间 小时注册时间2011-6-23最后登录1970-1-1 
 | 
 
| 
本帖最后由 Delta 于 2013-12-11 21:39 编辑
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  
 最近写程序,遇到到个没碰到过的情况:程序中对某数组处理,要删除一些元素,从而数组维数的长度不再相等(表述不清,可能不易理解,说直白一点,就是一个矩阵,每行删除了不等数目的元素,后面的程序继续处理剩下的元素,删除的元素标记为0或其他值不适合继续处理),想来想去用指针数组完美解决了该问题。
 
 废话少说,直接上程序,希望对需要的人有帮助。
 
 PROGRAM test_array_pointer
 IMPLICIT NONE
 
 TYPE :: ptr
 REAL, POINTER :: p(:)
 END TYPE
 
 TYPE(ptr), ALLOCATABLE :: x(:)
 
 REAL, TARGET :: a(1)
 REAL, TARGET :: b(2)
 REAL, TARGET :: c(3)
 
 
 a=(/1.0/)
 b=(/1.0,2.0/)
 c=(/1.0,2.0,3.0/)
 
 ALLOCATE(x(3))
 
 x(1)%p => a
 x(2)%p => b
 x(3)%p => c
 
 WRITE(*,*)  x(1)%p
 WRITE(*,*)  x(2)%p
 WRITE(*,*)  x(3)%p
 
 DEALLOCATE(x)
 
 STOP
 END PROGRAM test_array_pointer
 
 
 
 程序输出结果:
 1.000000
 1.000000        2.000000
 1.000000        2.000000        3.000000
 FORTRAN STOP
 
 
 
 | 
 评分
查看全部评分
 |