Fortran语言中的数组函数调用
我想将大小为N的数组函数的返回值赋给N个标量。在最简单的情况下,数组的大小为2,如下所示: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 =
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和时间的函数),所以我不想给它们添加其他维度