Fortran Coder

查看: 10450|回复: 6
打印 上一主题 下一主题

[子程序] 求助!!子函数变量是数组时,如何声明数组的大小??

[复制链接]

6

帖子

2

主题

0

精华

入门

F 币
35 元
贡献
20 点
跳转到指定楼层
楼主
发表于 2019-11-11 22:38:34 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
      COMPLEX FUNCTION FILON(CFUN,CEX,ARG,N,FAC)
      COMPLEX AI,CSUM,CFUN(1),CEX(1),DFUN,DEX,DARG,DPROD
      DIMENSION ARG(1)
      AI=CMPLX(0.,1E0)
      CSUM=0E0
      DO 10 I=1,N-1
      DARG=-AI/(ARG(I+1)-ARG(I))
      DFUN=CFUN(I+1)-CFUN(I)
      DEX=CEX(I+1)-CEX(I)
      DPROD=CFUN(I+1)*CEX(I+1)-CFUN(I)*CEX(I)
      CSUM=CSUM+DARG*(DPROD-DARG*DFUN*DEX)
  10  CONTINUE
      FILON=FAC*CSUM
      RETURN
      END

请问上述子函数中,变量CFUN,CEX以及ARG的数组大小为N,为什么声明的时候用CFUN(1),CEX(1)和ARG(1)呢?

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

6

帖子

2

主题

0

精华

入门

F 币
35 元
贡献
20 点
沙发
 楼主| 发表于 2019-11-12 11:16:32 | 显示全部楼层
necrohan 发表于 2019-11-12 10:06
这应该是一种不严禁而且过时的用法。
我感觉可以这么理解,传递给函数的变量是数组时,实际传递进来的是数 ...

非常感谢您的回答,这个问题困扰了我好久

6

帖子

2

主题

0

精华

入门

F 币
35 元
贡献
20 点
板凳
 楼主| 发表于 2019-11-12 11:17:54 | 显示全部楼层
fcode 发表于 2019-11-12 11:11
是的,这种传递数组的方式非常古老,并且早就淘汰了。

你可以看本站的文章:http://passarray.w.fcode.cn/ ...

这里真是学fortran的天堂啊,困扰了我一天的问题,瞬间解决了!万分感谢

6

帖子

2

主题

0

精华

入门

F 币
35 元
贡献
20 点
地板
 楼主| 发表于 2019-11-13 10:00:09 | 显示全部楼层
necrohan 发表于 2019-11-12 10:06
这应该是一种不严禁而且过时的用法。
我感觉可以这么理解,传递给函数的变量是数组时,实际传递进来的是数 ...

请问声明的时候用CFUN(N),CEX(N)和ARG(N)是不是正确呢?
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 15:35

Powered by Tencent X3.4

© 2013-2024 Tencent

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