Pointers 指向更小维数组的Fortran指针

Pointers 指向更小维数组的Fortran指针,pointers,fortran,Pointers,Fortran,我想创建一个指向更小维度数组的指针。 例如,我有一些数组arr(1:2,1:10,1:10) 现在我想创建一个指向arr(1:1,1:10,1:10)的指针,但我想先删除它,我不知道该如何命名,因为它看起来像索引,第二个指针指向(2:2,1:10,1:10) 我需要它,因为我想把二维数组(矩阵)发送给函数 下面是我想用伪代码做的一个指示 INTEGER, DIMENSION (1:2, 1:10, 1:10), TARGET :: BOUNDRIES INTEGER, DIMENSION (:,

我想创建一个指向更小维度数组的指针。 例如,我有一些数组
arr(1:2,1:10,1:10)

现在我想创建一个指向arr(1:1,1:10,1:10)的指针,但我想先删除它,我不知道该如何命名,因为它看起来像索引,第二个指针指向(2:2,1:10,1:10)

我需要它,因为我想把二维数组(矩阵)发送给函数

下面是我想用伪代码做的一个指示

INTEGER, DIMENSION (1:2, 1:10, 1:10), TARGET :: BOUNDRIES
INTEGER, DIMENSION (:,:), POINTER : LEFT_BOUNDRY

LEFT_BOUNDRY => BOUNDRIES(1,1:10,1:10)
DO i = 1,n
    DO j = 1,10
    write(*,*) LEFT_BOUNDRY(i,j)
    END DO
END DO
有可能吗?

当我们在函数或子例程(统称为过程)中有一个伪参数时,我们在执行该过程时有一个相应的实际参数。考虑子程序<代码> s>代码>:

subroutine s(x)
  real x(5,2)
  ...
end subroutine s
在本例中,伪参数
x
是一个显式形状数组,秩为2,形状
[5,2]

如果我们想

call s(y)
其中
y
是一些
真实的
东西,我们不需要
y
一个秩为2、形状为
[5,2]
的完整数组。我们只需要
y
至少有十个元素,当我们在子例程中时,一个叫做存储关联的东西将这十个元素映射到
x

那么想象一下

real y1(10), y2(1,10), y3(29)
call s(y1)
call s(y2)
call s(y3)
每一项工作(在最后一个例子中,它只是与伪参数相关联的前十个元素)

至关重要的是,在选择要与
x
关联的元素时,所谓的元素序列非常重要。考虑

real y(5,12,10,10)
call s (y(1,1,1:2,3:7))
这是由十个元素组成的y的数组部分。这十个元素一起成为子例程
s
中的
x


总之,如果您想将
arr(2,1:10,1:10)
(实际上是一个秩2数组部分)传递给秩2参数,它是一个不超过100个元素的显式形状数组,那么一切都很好。

根据您的描述,您根本不需要指针。您可以将
arr(2,:,:)
传递给函数吗?您需要显示功能界面,以便我们提供建议。我想使用的功能是我知道我可以编辑它,但我不知道;我不想这样做,我也不知道这是可能的。这个链接中没有一个指针。你想做什么?你能把标题(论据列表+论据声明)复制到你的问题中吗?我试着稍微整理一下你的问题,但是我不能轻易地改变第二段而不改变你的意思。你能解释一下你的意思吗?[如果你不是以英语为母语的作家,那没关系,只要有人知道你想说什么,就可以为你起草。]@francescalus OP用英语写作可能不太舒服,而且这篇文章目前很难理解。也许第二段需要重写,忽略不易理解的部分。