2011-12-19 86 views

回答

7

這裏是一個派生類型使用的一個例子的程序:

TYPE mytype 
    INTEGER,DIMENSION(3) :: ints 
    REAL,DIMENSION(5)  :: floats 
    CHARACTER,DIMENSION(3) :: chars 
ENDTYPE mytype 

TYPE(mytype) :: a 

a%ints=[1,2,3] 
a%floats=[1,2,3,4,5] 
a%chars=['a','b','c'] 

WRITE(*,*)a 

END 

的輸出是:

 1   2   3 1.000000  2.000000  
3.000000  4.000000  5.000000  abc 

編輯:由於每建議通過喬納森·德西:

爲了有一個數組,其中每個元素都有一個int,float和char元素,你可以這樣做:

TYPE mytype 
    INTEGER :: ints 
    REAL  :: floats 
    CHARACTER :: chars 
ENDTYPE mytype 

TYPE(mytype),DIMENSION(:),ALLOCATABLE :: a 

ALLOCATE(a(10)) 

然後,您會引用您的元素,例如a(i)%intsa(i)%floats,a(i)%chars。 相關的答案見Allocate dynamic array with interdependent dimensions

+2

只需添加; IRO-bot的答案正確地爲您提供了一個派生類型,其中包含整數,浮點數和字符數組。如果你想要一個包含int + float + char的類型的數組,你可以像上面那樣定義你的類型,但是在類型上沒有DIMENSIONS - 例如,一個int,float和char - 然後定義例如。 TYPE(mytype),DIMENSION(10):: a'或'TYPE(mytype),ALLOCATABLE,DIMENSION(:),:: a'和後面的'allocate(a(10))'。 – 2011-12-19 13:51:40

+0

@JonathanDursi感謝您的建議 - 我將其添加到答案。 – milancurcic 2011-12-19 16:48:35

+0

非常感謝,夥計們。這非常有幫助。因此,使用派生類型我可以從主流/默認類型構建我自己的類型,我可以在定義中聲明的形式/維度,或者更好的是,根據程序的運行方式稍後分配它。甜。 – 2011-12-20 00:14:47

相關問題