fortran二维可变大小数组赋初值

2024-11-28 06:24:40
推荐回答(1个)
回答(1):

第一,data 是定义语句,而不是执行语句。
第二,allocate(a(n,n)) 没有问题。
第三,网上这些问题你很难搜索到,因为不好描述。别人说的很可能与你遇到的不是同一个问题。你需要有针对性的提问。

以下是解答。
Program Baidu_Thlws
Implicit None
real :: b( 3, 3 ) = (/(/1,2,1/),(/3,2,3/),(/2,3,4/)/) !//直接定义时,可以使用这样的二维数组形式。
Real , allocatable :: a( : , : )
Allocate( a( 3, 3 ) )
a = reshape( (/1,2,3,4,5,6,7,8,9/) , (/3,3/) ) !// 可变数组可使用 reshape 把一维数组形式转变为二维数组形式
write(*,*) a
write(*,*) b
End Program Baidu_Thlws

reshape 函数用于把一个数组改变外形,变为另一个数组。
例如上例:
a = reshape( (/1,2,3,4,5,6,7,8,9/) , (/3,3/) )

(/1,2,3,4,5,6,7,8,9/)
这个 1*9 的一维数组,转换为
(/3,3/) 的数组,即 3*3 的数组。