最近编个程序,module中定义一可变数组,以下是程序:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

module hhh
implicit none
public add
integer,save::a,b,c,h
integer,save,allocatable::d(:)
contains
 subroutine add(a,b,c,d)
 implicit none
 integer::a,b,c
 integer,allocatable::d(:)
 a=1
 b=2
 c=a+b
 allocate(d(2))
 d=22
 write(*,*) a,c,d
 a=10
 end subroutine
end module hhh

program main
use hhh
implicit none
 call add(a,b,c,d)
 write(*,*) a,c,d
end

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

最终结果:1             3              22                 22

                10           3       -572662307    -572662307

关于a,c结果很好理解,但是d结果不知在主程序里面却成了 -572662307 ,   请教各位,谢谢了