小编Twi*_*irl的帖子

现代 Fortran 中数组的连续性

我正在阅读《现代 Fortran 解释》(2018 年版)。p24上说:

大多数实现实际上按数组元素顺序将数组存储在连续存储中,但我们强调标准并不要求这样做。

我相信这已经可以追溯到旧的 Fortran 77(及更早版本)。给予声明

real, dimension(5,5) :: a
Run Code Online (Sandbox Code Playgroud)

我的理解是,标准不要求这个数组是连续的。这与本书第 2 节中所说的一致。第 140 页上的 7.18.1:

...Fortran 标准回避指定数组在占用连续内存位置且没有中间未占用空间的意义上是否是连续的。

但书接着继续(仍然是第 140 页):

标准认为以下任何数组都是连续的:

  • 具有连续属性的数组;
  • 不是指针或假定形状的整个数组(命名数组或数组组件,无需进一步限定);
  • ...
  • 我理解第一个标准;但我对第二个标准感到困惑。这是否与前面的说法不一致,即 fortran 标准不要求将数组按数组元素顺序存储在连续存储中?现代 Fortran 是否已经摆脱了这种范式?或者由于超出我对这个主题的理解的原因,上述引用并不相互矛盾?在上面的例子中,数组a是否需要连续?

    arrays fortran contiguous

    4
    推荐指数
    1
    解决办法
    402
    查看次数

    标签 统计

    arrays ×1

    contiguous ×1

    fortran ×1