本帖最后由 楚香饭 于 2015-4-13 15:42 编辑
这是很多新手容易理解错误的一个问题。
Fortran 的指针,只有“(指向数组的)指针”,而没有“(指向变量的)指针的数组”(红色是实质,而蓝色是组成部分,橙色是修饰语)
也就是说 Type(ClassNode),Pointer::Node(:) ,它是一个整体,它只能整体指向一个数组。而不能分别指向。
假如你想指向 1,3,5(等差数列),可以用这个代码:[Fortran] 纯文本查看 复制代码 Program test
Type ClassNode
Real(8) x,y!节点坐标
Real(8) E,v!材料属性
End Type
Type ClassElement!三角形单元
Type(ClassNode),Pointer::Node(:)
End Type
Type(ClassNode) , target :: Node(5)
Type(ClassElement) :: Element
Node(:).x=[10,20,30,40,50]
Element.Node => Node(1:5:2)
Print * , Element.Node(1:3).x
Pause
End Program test 如果你想分别指向,试试这样的代码:
[Fortran] 纯文本查看 复制代码 Program test
Type ClassNode
Real(8) x,y!节点坐标
Real(8) E,v!材料属性
End Type
Type ClassElement!三角形单元
Type(ClassNode),Pointer::Node
End Type
Type(ClassNode) , target :: Node(5)
Type(ClassElement) :: Element(3)
Node(:).x=[10,20,30,40,50]
Element(1).Node => Node(1)
Element(2).Node => Node(3)
Element(3).Node => Node(4)
Print * , Element(1).Node.x , Element(2).Node.x , Element(3).Node.x
Pause
End Program test
|