module foo
contains
subroutine bar()
integer :: i(3)
i(1) = 1
i(2) = 2
i(3) = 3
call baz(i, i)
end subroutine
subroutine baz(a,b)
integer, intent(in) :: a(:)
integer, intent(inout) :: b(:)
b(2) = 5
print *, a
print *, b
end subroutine
end module
program xx
use foo
call bar()
end program
在这段代码中,我将相同的数组传递i
给 baz,将其绑定到具有不同意图的参数。当然,当我打印时a
,它会改变。这是未定义的行为,还是根据规范?
请注意,我完全希望这会发生。我对这种行为并不感到困惑,我只是想了解它是否有效。