使用指针

时间:2017-07-17 15:39:28

标签: pointers fortran

这是我的代码:

Program Pointers

Implicit none

Integer::i,j
Real, parameter, pointer, dimension(4)::P_pot=[0.50,0.49,0.47,0.47]
Real, parameter, pointer, dimension(4)::Q_pot=[0.85,0.87,0.88,0.90]
Complex,dimension(3,4)::S_pot

!Description:
!S_pot=cmplx(P_pot,Q_pot)

Do i=1,3

   S_pot(i,)=cmplx(,)

End Do

End Program Pointers

对于P_pot的所有三维,我想在Q_pot元素中使用关联或应对数组(S_potS_pot)的指针。 怎么做?

[摘自评论] 确切地说,这就是我想用指针做的事情:

Do concurrent(i=1:3,j=1:4) 
  S_pot(I,j)=cmplx(P_pot(j),Q_pot(j))
End Do

1 个答案:

答案 0 :(得分:0)

在此上下文中无法使用指针,因为复数值通常由实对和虚对表示,请参阅here

因此,即使使用equivalence将复数数组映射到实数数组两倍,您也需要交错实数和虚数值。

指针关联或等效性是不可能的。 因此,您在这里唯一的选择是复制您在评论中提出的价值观,例如:

S_pot = spread( cmplx(P_pot,Q_pot), 1, 3 )