我想将大小为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”?
答案 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_input
和y_input
,您可以直接在函数调用中指定值:
!...
a_dummy = Test_Array(1.0, 2.0)
!...