2012-11-02 271 views
2

我用下面的例子困惑:Fortran派生类型:

TYPE :: car 
    real :: x, u ! position, velocity 
    real :: y, v ! 
    real :: z, w ! 
    real,dimension(3) :: uvw_0 ! initial uvw 
END TYPE 

TYPE (car), pointer:: mercedes 
TYPE (car), DIMENSION(m,n,q,r), TARGET :: mercedes_ay 

它看起来像对象的实现,但到底是什么

TYPE (car), DIMENSION(m,n,q,r), TARGET :: mercedes_ay 

做相对于TYPE(坐车) - 什么变量由DIMENSION(m,n,q,r)引用? mercedes_ay(1,1,1,1)是什么意思? mercedes(1,1,1,1)是什么意思?

+0

您是否熟悉Fortran中的数组? – tpg2114

回答

6

它所做的只是声明维数为(m,n,q,r)的car的数组。这些维度不是由你的示例代码定义的。

mercedes_ay(1,1,1,1)是阵列中的第一辆车。所以mercedes_ay(1,1,1,1)%x是第一辆车的x位置。 mercedes_ay(1,1,1,1)%uvw_0(1)是第一辆车的初始u。 etc ..

mercedes(1,1,1,1)是不可能的,因为它没有DIMENSION,它是一个标量。所以它只能指向一个标量。相反,它可能会被使用,如:

mercedes => mercedes_ay(1,1,1,1) 

这将意味着你在数组中的第一辆车指向mercedes。它基本上是一个别名。

+0

非常感谢你! – Pippi