Fortran Coder

查看: 10705|回复: 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)呢?

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

250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

沙发
发表于 2019-11-12 10:06:51 | 只看该作者
这应该是一种不严禁而且过时的用法。
我感觉可以这么理解,传递给函数的变量是数组时,实际传递进来的是数组的地址,比如DIMENSION ARG(1)就是为了告诉函数ARG是个数组,使用时按地址考虑。
实际使用时ARG(1)表示第一个元素的地址,ARG(2)表示第二个,以此类推。
声明的类型不一样,地址增加的字节不一样,因此变量声明不能少。
用这种方法必须对数组元素的个数非常清楚,否则容易出现数组越界。
这个函数传递进参数N是为了控制数组访问的地址,防止越界的。

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1643 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2019-11-12 11:11:43 | 只看该作者
是的,这种传递数组的方式非常古老,并且早就淘汰了。

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

6

帖子

2

主题

0

精华

入门

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

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

6

帖子

2

主题

0

精华

入门

F 币
35 元
贡献
20 点
5#
 楼主| 发表于 2019-11-12 11:17:54 | 只看该作者
fcode 发表于 2019-11-12 11:11
是的,这种传递数组的方式非常古老,并且早就淘汰了。

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

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

6

帖子

2

主题

0

精华

入门

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

请问声明的时候用CFUN(N),CEX(N)和ARG(N)是不是正确呢?

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
7#
发表于 2019-11-13 10:37:42 | 只看该作者
zxbballack 发表于 2019-11-13 10:00
请问声明的时候用CFUN(N),CEX(N)和ARG(N)是不是正确呢?

这种叫“自动”数组,是可以的。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-28 06:31

Powered by Tencent X3.4

© 2013-2024 Tencent

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