gpt4 book ai didi

arrays - 指针数组

转载 作者:行者123 更新时间:2023-12-03 09:17:10 25 4
gpt4 key购买 nike

我正在尝试实现一个指针数组,以便可以遍历元素。但是我不确定如何正确执行此操作:

TYPE(domain),POINTER              :: d01,d02,d03
TYPE(domain),DIMENSION(:),POINTER :: dom
...

dom(1) => d01
dom(2) => d02
dom(3) => d03
...

接着:
...
IF(ASSOCIATED(dom(2),d02))THEN
...

编译器(x86-64 Linux -tp istanbul-64上的pgf90 10.6-0 64位目标)给出了以下错误消息:
 PGF90-S-0074-Illegal number or type of arguments to associated - keyword argument pointer (test_ptr.f90: 10)
0 inform, 0 warnings, 1 severes, 0 fatal for MAIN

据我了解,我如何对一个指针数组进行子集化有问题。 dom(2)d02均为0级(标量指针)。实现此方法的正确方法是什么?

谢谢。

最佳答案

是的,指针数组在Fortran中很有趣。

问题是这样的:

TYPE(domain),DIMENSION(:),POINTER :: dom

正如您可能会想到的那样,它没有定义指针数组,而是指向数组的指针。您可以在Fortran中使用这些功能来完成许多很酷的事情-指向大型数组的 slice ,即使有跨步-但这绝对是指向数组的指针,而不是指针数组。

在Fortran中获取指针数组的唯一方法是定义一个类型:
type domainptr
type(domain), pointer :: p
end type domainptr

type(domainptr), dimension(3) :: dom

dom(1)%p => d01
dom(2)%p => d02
dom(3)%p => d03

据我所知,您必须在Fortran中执行此操作的唯一真正原因是语法。我希望看到该标准的某些更高版本中已修复的问题。

关于arrays - 指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8900336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com