在Fortran中调用数组函数

时间:2013-12-29 11:24:12

标签: fortran

我想将大小为N的数组函数的返回值赋给N个标量。在最简单的情况下,数组的大小为2,如下所示:

PROGRAM ARRAY_FUNCTIONS
IMPLICIT NONE
REAL :: x_input , y_input
REAL :: x_output, y_output
REAL, DIMENSION(0:1) :: a_dummy

x_input = 1.0
y_input = 2.0

a_dummy = Test_Array(x_input, y_input)

x_output = a_dummy(0)
y_output = a_dummy(1)    

CONTAINS
  FUNCTION Test_Array(x1,y1)
  REAL, DIMENSION(0:1) :: Test_Array

  Test_Array(0) = 2*x1
  Test_Array(1) = 2*x1
  END FUNCTION Test_Array
END PROGRAM ARRAY_FUNCTIONS

有没有办法宣布一个虚拟变量“a_dummy”并通过该变量分配我的标量“x_input”和“y_input”?

1 个答案:

答案 0 :(得分:1)

据我所知,没有至少一些临时数组的声明是不可能的。不过,您可以尝试使用指针来节省一些内存:

!...
REAL, POINTER :: x_output, y_output
REAL, DIMENSION(0:1),TARGET :: a_dummy

x_input = 1.0
y_input = 2.0

a_dummy = Test_Array(x_input, y_input)

x_output => a_dummy(0)
y_output => a_dummy(1) 
!... 

为什么不直接使用输入和输出数组?

对于x_inputy_input,您可以直接在函数调用中指定值:

!...
a_dummy = Test_Array(1.0, 2.0)
!...