gpt4 book ai didi

fortran - 我可以有一个指向可分配数组组件中项目的指针吗?

转载 作者:行者123 更新时间:2023-11-30 23:58:22 24 4
gpt4 key购买 nike

我有一个用户定义的类型 vector .在另一种类型中,我有一个可分配的向量数组。我想要一个指向这个可分配数组中的单个向量的指针。所以我想我会这样做:

type another_type
type(vector),allocatable,target::my_vectors(:)
end type


type(vector),pointer::pointed_vec

但是当我编译时,编译器提示说:
This attribute specification is not valid for a component definition statement.

我可以有一个指向可分配数组中单个项目的指针吗?是否可以?

最佳答案

只有变量或派生类型的实际实例可能具有 TARGET属性。因此,第二个类型定义中的 allocatable 不能是目标,因为这只是类型应该是什么样子的描述,如果您愿意,可以使用模板。

但是,您可以给出 TARGET 类型的真实实例。属性,然后使用适当声明的 Fortran 指针指向它的任何组成部分。

已编辑 :另一种选择,可能更多的是你所追求的,是给类型中的向量数组 POINTER仅属性,这隐含地使其既合法的指针对象又可用于分配内存。您只需要确保在使用它分配内存后不要重新分配指针(在下面的示例中为 v),因为那样会发生泄漏。

PROGRAM so_pointtype

IMPLICIT NONE

TYPE vec
INTEGER :: x = 2, y = 3
END TYPE vec

TYPE foo
TYPE(vec),POINTER :: v(:)
END TYPE foo

TYPE(foo) :: z
TYPE(vec),DIMENSION(:),POINTER :: p2 => NULL()

ALLOCATE(z%v(3))

PRINT*,z%v(:)

p2 => z%v(:)

PRINT*,p2

END PROGRAM so_pointtype

关于fortran - 我可以有一个指向可分配数组组件中项目的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3948210/

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