我的FORTRAN 77码的一部分转化为C++FORTRAN等价于C++语言
DIMENSION ARRAY(513),JRRAY(2,513)
EQUIVALENCE (ARRAY(1),JRRAY(1,1))
这是每个变量名开始与I隐含代码,J,K,L,M,N,O, P隐含地被视为整数类型。因此,在这里我们有一个名为ARRAY的双精度数组和一个名为JRRAY的整型数组。
等价性语句将两个数组的起点指向相同的内存位置。然而,不管怎样,当ARRAY(I)被调用时,这些字节被解释为两个不同的形式,或者当JRRAY(I,J)被调用时(至少我认为会发生什么),这些字节被解释为不同的形式。
C++中是否有类似的方法,其中相同的内存位置可以解释为不同的类型?
或者与FORTRAN中的EQUIVALENCE相同,但是在C++中。
回想一下,在fortran数组中,按列的主要顺序存储,所以'JRRAY(1,X)'和'JRRAY(2,X)'指向'ARRAY(X)'的连续部分。 –
您的意思是对表示的实际重新解释还是自动转换?即如果我将pi存储在'ARRAY'中并从'JRRAY'中读出,我会得到'3'还是与'double'的位模式相对应的数字? – Quentin
@Quentin FORTRAN只是重新解释表示,所以这大概是他想在C++中做的。 – Barmar