- 积分
- 622
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-23
- 最后登录
- 1970-1-1
![未绑定新浪微博用户 新浪微博达人勋](source/plugin/sina_login/img/gray.png)
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 Delta 于 2013-12-11 21:39 编辑
最近写程序,遇到到个没碰到过的情况:程序中对某数组处理,要删除一些元素,从而数组维数的长度不再相等(表述不清,可能不易理解,说直白一点,就是一个矩阵,每行删除了不等数目的元素,后面的程序继续处理剩下的元素,删除的元素标记为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
|
评分
-
查看全部评分
|