0

Fortran には共通ブロックに共通ブロックがありますか? 構造体の中に構造体があるように。例えば

integer int 1, int2
common/Common1/int1, int2
float f1, f2
common/Common2/f1, f2
save/Common2/, /Common1/

上記のコードは、common1 内にある common2 を意味しますか?

4

1 に答える 1

0

いいえ、あなたが書いたコードは無効です。共通ブロックは、単なる名前付きのメモリ領域です。

Fortran には、C 構造体に非常によく似た「派生データ型」があります。Fortran の派生型宣言は次のようになります。

type float_struct
  real :: f1, f2
end type

これで、この型の変数を含む別の派生型を宣言できます。

type my_struct
  integer :: int1, int2
  type (float_struct) :: my_float_struct
end type

これらは型の宣言であり、その型の変数のインスタンス化ではないことに注意してください。サブルーチン、関数、またはプログラムで宣言にアクセスできるように、宣言をモジュールに入れるのが最善です。たとえば、上記の宣言が「my_structs_mod」という名前のモジュールに配置されているとします。次に、次のように使用できます。

subroutine sub()
use my_structs_mod
type (my_struct) :: ms
ms%int1 = 42
...
end subroutine

パーセント記号 (%) は、C のドット (.) 演算子に似ていることに注意してください。これにより、派生型に含まれるデータにアクセスできます。

于 2011-10-27T00:35:04.603 に答える