回 帖 发 新 帖 刷新版面

主题:关于fortran 的equivalence

程序声明中有这样一段话,
integer*4 lwrd(5)
  integer*2 swrd(39)
   equivalence (lwrd,swrd)
equivalence 中的作用是共享同一块内存。但是lwrd 与swrd 是如何对齐的呢?即lwrd(1)=swrd(1)?
或是lwrd(1)=swrd(1:2)??
请高手指点,谢谢,

我在读数据时 ,不知道怎么去理解他,

回复列表 (共2个回复)

沙发

一个lwrd单元对应两个swrd单元。
lwrd(1) 对应:swrd(1:2)
lwrd(2) 对应:swrd(3:4)
lwrd(n) 对应:swrd(n*2-1:n*2)

板凳

另:这是F77的东东,那时因内存不够用~~~~
并且equivalence已经明确将被抛弃了,所以新程序还是别用了:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册