将2d数组作为1d参数fortran传递给子例程

Skyy2010

我想将2d数组传递给子例程,并将此数组视为1d参数。我试图以这种方式传递它:subroutine(array(1,:))。如果我显式定义数组,则此方法有效。但是,如果数组是可分配的,则会出现以下错误:'array'的实际参数必须为ALLOCATABLE。如何使这项工作有效?

这是一些简短的示例代码,它给出了上面的错误:

program array
implicit none
integer,dimension(:,:),allocatable::i

allocate(i(2,2))
i(1,1)=1

call array_method(i(1,:))

contains

subroutine array_method(i)
implicit none
integer,allocatable,dimension(:),intent(in)::i
write(*,*) i(1)
end subroutine array_method

end program array

如果我将代码更改为显式定义的数组,如下所示,则可以正常工作。但是,我想使用可分配数组。

program array
implicit none
integer,dimension(2,2)::i

i(1,1)=1

call array_method(i(1,:))

contains

subroutine array_method(i)
implicit none
integer,dimension(2),intent(in)::i
write(*,*) i(1)
end subroutine array_method

end program array

如果我将子例程中的参数数组更改为可分配,并将传递的参数保留在主程序中作为显式定义的数组(例如(2,2)),我仍然会遇到相同的错误。

法国斯卡鲁斯

在子例程array_method(第一个例程)中,将allocatable属性赋予哑元参数。这要求实际参数也具有该属性。

然而,实际的说法是i(1,:)这是分配,即使i本身。

现在,根据您要在第一种情况下执行的操作,哑元参数不需要具有该allocatable属性。除非您想要更改分配状态(您无法给出intent(in)),或者使用的“实际”范围i,否则就可以不使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将2D数组作为参数传递给采用1D数组的函数

来自分类Dev

将2D指针数组传递给具有1D指针数组参数的函数

来自分类Dev

JAVA将2d数组的列作为1d数组传递

来自分类Dev

将2D数组和字符串向量作为参数传递给函数

来自分类Dev

使用numpy和swig将2d数组作为参数传递给函数

来自分类Dev

FORTRAN:将伪参数传递给子例程

来自分类Dev

FORTRAN:将伪参数传递给子例程

来自分类Dev

将char的2D数组作为参数传递

来自分类Dev

将工作表作为参数传递给子例程

来自分类Dev

如何使用f2py将字符串数组传递给Fortran子例程

来自分类Dev

Fortran将数字传递给子例程

来自分类Dev

脾气暴躁:将1D数组作为2D数组而不进行整形

来自分类Dev

将指向2D VLA的指针作为函数参数传递给C中的行向量

来自分类Dev

如何将2d数组作为multiprocessing.Array传递给multiprocessing.Pool?

来自分类Dev

Fortran 90子例程中重复使用的2D数组

来自分类Dev

从Fortran将数组作为函数参数传递给lua

来自分类Dev

将 2d 数组索引为 1d

来自分类Dev

将Perl数组取消引用作为参数传递给子例程时,它无法正常工作

来自分类Dev

将Perl数组取消引用作为参数传递给子例程时,它无法正常工作

来自分类Dev

要传递2D维度数组作为参数?

来自分类Dev

C-如何将变量2d数组作为参数传递

来自分类Dev

将2d数组传递给C ++中的函数

来自分类Dev

将2D数组传递给c中的函数

来自分类Dev

使用JavaScript将2d数组传递给函数

来自分类Dev

将2D数组传递给C函数

来自分类Dev

将结构的2D数组传递给函数

来自分类Dev

C ++将动态指针传递给2D数组

来自分类Dev

将2D数组传递给函数/构造函数

来自分类Dev

将结构的2D数组传递给函数

Related 相关文章

热门标签

归档