0

関数呼び出しから仮引数をグローバル化する方法は?

私はFortranで以下のコードを持っています

A(a,b)  // here a and b are the values filling from function call but they are not declared any where
.
.
.
B(a.b) // same variable passing again to this function call also.

ここでの問題は、a と b の値が2の呼び出しで維持されないことです。ゴミ返しです。私も共通を使用してこれを試しましたが、仮引数のグローバル化を受け入れていません。どうやってするの?

4

3 に答える 3

1

a「 andは関数呼び出しから値が入力されていますが、どこにも宣言されていません」とあなたは言いますb-私はまだあなたが何をしようとしているのかを正確に把握しようとしていますが、このステートメントはあらゆる種類の赤い旗を投げます これは Fortran です。宣言する必要があります (注を参照)。

何を達成しようとしているのかはわかりませんが、「グローバル化」はあなたがやりたいことではない可能性があります。コード内のグローバル変数を排除するよう努めるべきです。

注: はい、Fortran (実際には FORTRAN) は変数の暗黙的な宣言をサポートしています。ただし、これはパンチ カードとダム端末の時代の遺物です。 どこでも暗黙の型付けを使用しないでください。コードには常に を含める必要がありimplicit none、変数を適切に宣言する必要があります。

于 2009-07-22T15:15:45.063 に答える
1

宣言を使用してSAVE、サブルーチンまたは関数の呼び出し全体で状態を保存します。

于 2015-06-15T21:02:05.387 に答える
0

ダミー変数は本質的に、ダミー引数です。これらは単なるプレースホルダーであり、関数が呼び出されると、関数を呼び出すときに渡されたものに置き換えられます。ばかげた例を見てみましょう:

integer function add(x,y)
  integer :: x, y
  add = x + y
end

これで、この関数をさまざまな方法で呼び出すことができます。aとbを追加したいとしましょう:

integer :: a, b, c

a = 3
b = 4
c = add(a,b)

ここで、aは関数内のxの位置を取り、bはyの位置を取ります。cの値は7になります。同じように簡単に行うことができます。

integer :: c

c = add(3,4)

同じ結果になります。ご覧のとおり、ダミー引数をグローバル化しても意味がありません。

于 2012-12-22T02:37:35.613 に答える