Fortran语言中的数组函数调用

Fortran语言中的数组函数调用,fortran,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 =

我想将大小为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”?

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

!...
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\u input
y\u input
,您可以在函数调用中直接指定值:

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

@AlexanderVogt是的,我刚刚纠正了它,谢谢你指出了它,我简化了我真正想做的事情。在我的代码中,x_输入和y_输入实际上是3维数组(x,y和时间的函数),所以我不想给它们添加其他维度