求解:如何将自定义函数作为参数传递?
一个program要调用module中的subroutine,其中有一个参数是自定义函数(返回数组),请问如何在program主程序中传递此函数? 一个函数名当作参数传递的例子,传递的是自定义的function函数program shican
implicit none
!函数名当作实参
real,external::func
call zhixing(func)
stop
end program
subroutine zhixing(func)
implicit none
real,external::func
write(*,*) func(10.0)
end subroutine
real function func(x)
implicit none
real x
func=x*x
end function func
[ 本帖最后由 ilxy 于 2007-3-2 15:22 编辑 ] 传递的是自定义的subroutine函数
program shican
implicit none
!函数名当作实参
real,external::zichengxu
call zhixing(zichengxu)
stop
end program
subroutine zhixing(zichengxu)
implicit none
real,external::zichengxu
call zichengxu(10.0)
end subroutine
subroutine zichengxu(x)
implicit none
real x,y
y=x*x
print *,y
end subroutine 多谢。
明白了。我原来的函数返回值是个数组,且该函数被从主程序传递给了module中的另一个函数。我在接收函数中加了个interface就可以了。
原帖由 ilxy 于 2007-3-2 15:12 发表
一个函数名当作参数传递的例子,传递的是自定义的function函数
program shican
implicit none
!函数名当作实参
real,external::func
call zhixing(func)
stop
end program
subroutine zhixing(func)
... 另外还想请教:Fortran中能否实现像matlab中那样的varargin、varargout、nargin?有没有可以容纳不同类型、维数元素的数组(类似matlab中的cell)? 可以自己定义type,包括不同的类型。 楼主能否讲清楚些?
页:
[1]