lvganlin 发表于 2017-2-23 18:26:29

关于fortran子程序直接传参和指针传参的区别

请问fortran传参给子程序或函数时是不是传址?如果是那和其指针功能在很大程度上不就重了吗?请高人指点

vvt 发表于 2017-2-23 18:36:21

本帖最后由 vvt 于 2017-2-23 18:41 编辑

是的。传的是地址。正是因为这一点,所以指针,在fortran里的应用并没有很高的必要性(与C相比)

然而,并不是说fortran传递指针就没必要了。毕竟,fortran的指针,是“智能指针”,自带目标数组的维度大小上限下线间距等“额外信息”
举例来说:
Program www_fcode_cn
Implicit None
real , target ::x(3:5) = 3.1415954
real , pointer :: p(:)
p => x
call subp( p )
call subx( x )
contains

subroutine subp(x)
    real , pointer :: x(:)
    write(*,*) x , ubound(x) , lbound(x)
end subroutine subp

subroutine subx(x)
    real :: x(:)
    write(*,*) x , ubound(x) , lbound(x)
end subroutine subx

End Program www_fcode_cn

lvganlin 发表于 2017-2-23 20:32:27

vvt 发表于 2017-2-23 18:36
是的。传的是地址。正是因为这一点,所以指针,在fortran里的应用并没有很高的必要性(与C相比)

然而,并 ...

跑了一下这个例子,区别一目了然,非常感谢你的解答~!
页: [1]
查看完整版本: 关于fortran子程序直接传参和指针传参的区别