在 fortran 中,您可以声明具有任何合适(整数)范围的数组,例如:
real* 8 array(-10:10)
我相信fortran在通过引用传递时,总是会传递array(1)作为引用,但我不确定。
我正在使用fortran 指针,我相信fortran 指向的是“第一个”元素地址,即array(1),而不是array(-10)。但是我不确定。
Fortran 如何处理内存中的负数组索引?它是否定义了实施?
编辑:为了添加更多细节,我通过使用 fortran 指针指向地址将 malloc 块从 C 传递到 fortran,这是通过从 CIe C 中调用 fortran 例程来完成的:
void * pointer = malloc(blockSize*sizeof(double));
fortranpoint_(pointer);
fortran 点例程如下所示:
real*8 :: target block(5, -6:6, 0:0)
real*8 :: pointer array(:,:,:)
entry fortranPoint(block)
array => block
return
问题是,有时当它稍后尝试访问时说:
array(1, -6, 0)
我不确定这是访问块开头的地址还是之前的某个地址。我现在认为这是实现定义的,但想知道每个实现的细节。