我试图弄清楚如何在ARPACK中将值分配给名为ipntr的数组,该数组存储指针。我对fortran相对较新,我无法弄清楚这个数组的值是如何初始设置的。我正在看的代码是一个不对称的驱动程序示例dndrv1.f与ARPACK一起分发,我不理解的部分如下
program dndrv1
integer maxn, maxnev, maxncv, ldv
parameter (maxn=256, maxnev=12, maxncv=30, ldv=maxn)
c
c %--------------%
c | Local Arrays |
c %--------------%
c
integer iparam(11), ipntr(14)
logical select(maxncv)
Double precision
& ax(maxn), d(maxncv,3), resid(maxn),
& v(ldv,maxncv), workd(3*maxn),
& workev(3*maxncv),
& workl(3*maxncv*maxncv+6*maxncv)
c
c %---------------%
c | Local Scalars |
c %---------------%
c
character bmat*1, which*2
integer ido, n, nx, nev, ncv, lworkl, info, j,
& ierr, nconv, maxitr, ishfts, mode
Double precision
& tol, sigmar, sigmai
logical first, rvec
c
c %------------%
c | Parameters |
c %------------%
c
Double precision
& zero
parameter (zero = 0.0D+0)
c
c %-----------------------------%
c | BLAS & LAPACK routines used |
c %-----------------------------%
c
Double precision
& dlapy2, dnrm2
external dlapy2, dnrm2, daxpy
c
c %--------------------%
c | Intrinsic function |
c %--------------------%
c
intrinsic abs
write(*,*) ipntr
write语句的结果是:
1606679396 32767 1606696480 32767 1606918048 32767 0 0 0 0 0 0 0 0
显然没有像ipntr(1)= 1606679396这样的值如何分配这些值?
由于
答案 0 :(得分:3)
如果变量未在任何地方分配,那么它们的值将由任何随机字节序列恰好驻留在内存中来确定。您应该看到重新运行程序将产生不同的输出序列。