2011-12-19 60 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

相关问题