我正在阅读《现代Fortran解释》(2018年版)。在第24页上写道:
大多数实现实际上以数组元素顺序在连续的存储器中存储数组,但我们强调标准并没有要求这样做。
我相信这已经追溯到老的Fortran 77(甚至更早)了。给定声明:
我理解的是,标准不要求此数组是连续的。这与本书第7.18.1节第140页上所说的一致:
“......Fortran标准避免规定数组是否在占据连续内存位置且没有中间未占用的空间。”
但随后该书(仍在p140)继续写道:
“以下任何数组都被认为是标准的连续数组之一:”一个带有连续属性的数组;
一个整个数组(命名数组或没有进一步限定的数组组件),它不是指针或假设形状;
...
我理解第一个标准;但是第二个标准让我感到困惑。这是否与早期的 Fortran 标准不需要按数组元素顺序将数组存储在连续存储器中相矛盾?现代 Fortran 是否已经摒弃了这种范例?还是以上引文之间并不互相矛盾,因为存在我对这个主题的理解之外的其他原因?在上述示例中,数组 a 是否需要是连续的?
大多数实现实际上以数组元素顺序在连续的存储器中存储数组,但我们强调标准并没有要求这样做。
我相信这已经追溯到老的Fortran 77(甚至更早)了。给定声明:
real, dimension(5,5) :: a
我理解的是,标准不要求此数组是连续的。这与本书第7.18.1节第140页上所说的一致:
“......Fortran标准避免规定数组是否在占据连续内存位置且没有中间未占用的空间。”
但随后该书(仍在p140)继续写道:
“以下任何数组都被认为是标准的连续数组之一:”
我理解第一个标准;但是第二个标准让我感到困惑。这是否与早期的 Fortran 标准不需要按数组元素顺序将数组存储在连续存储器中相矛盾?现代 Fortran 是否已经摒弃了这种范例?还是以上引文之间并不互相矛盾,因为存在我对这个主题的理解之外的其他原因?在上述示例中,数组 a 是否需要是连续的?