今天看Fortran动态数组相关问题的时候遇到了一些问题。1、写代码的时候,如果直接定义integer::m=5,下一行写real*8 a(m),那编译将无法通过;但是如果在一个subroutine里,这个m作为子程序的输入参数传进来,在
integer::m后,可以下一行跟real*8 a(m),能成功编译,请问都是变量,为什么第一种形式不能编译,而第二种可以。
2、在后续作测试的时候发现,把一个数组a(大小为m,即5,初始化后里面为5个0.0)传入subroutine后,我在subroutine定义real,dimension(n)::a时,手滑将n达成了
阿拉伯数字的1,即real,dimension(1)::a,可程序仍可以正常编译,运行exe之后仍能输出正常的结果。代码如下,请大家不吝赐教,谢谢了!
[Fortran] 纯文本查看 复制代码
Program main
implicit none
integer::m=5
call dyaraayini(m)
end
Subroutine dyaraayini(n)
implicit none
integer n,i
real dya(n)
do i=1,n
dya(i)=0.0
end do
write(*,*)dya
call arraytest(dya,n)
write(*,*)dya
end
Subroutine arraytest(a,n)
implicit none
integer i,n
real,dimension(1)::a
! real,dimension(n)::a
do i=1,n
a(i)=1+i
end do
end
|