2012-11-02 227 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