爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6877|回复: 7

[经验总结] Fortran小技巧:利用指针数组对各行元素数目不同数据的处理

[复制链接]

新浪微博达人勋

发表于 2013-12-11 21:25:39 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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


评分

参与人数 3金钱 +45 贡献 +9 收起 理由
lqouc + 15 + 3 多谢分享
mofangbao + 15 + 3
言深深 + 15 + 3

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-11 21:50:25 | 显示全部楼层
挺好,谢谢分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-11 22:17:09 | 显示全部楼层
前来学习,{:eb315:}{:eb315:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-11 22:42:54 | 显示全部楼层
很实用,相信楼主的该程序,肯定能帮助不少同仁,多谢!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-12-12 08:34:50 | 显示全部楼层
惭愧,还不懂fortran的指针,好好学习一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-12-12 09:09:35 | 显示全部楼层
指针好用也容易出错,谢谢楼主分享的经验~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-12 09:18:24 | 显示全部楼层
用fortran几乎不咋用指针的说....想起来当时学C的时候 被指针绕的云里雾里
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-12-12 09:28:51 | 显示全部楼层
谢谢分享{:eb502:}
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表