Fortran では、適切な (整数) 範囲で配列を宣言できます。次に例を示します。
real* 8 array(-10:10)
Fortran は、参照渡しの場合、常に array(1) を参照として渡すと思いますが、よくわかりません。
私は fortran ポインターを使用していますが、fortran は配列 (-10) ではなく、「最初の」要素アドレス、つまり配列 (1) を指していると思います。しかし、よくわかりません。
Fortran はメモリ内の負の配列インデックスをどのように処理しますか? そして、それは定義されていますか?
編集: もう少し詳細を追加するために、Cie C 内から fortran ルーチンを呼び出すことによって行われるアドレスを指すために fortran ポインターを使用して、malloc されたブロックを 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)
これがブロックの先頭またはその前のどこかにあるアドレスにアクセスしているかどうかはわかりません。これは実装定義だと思いますが、各実装の詳細を知りたいです。