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