【问题标题】:Is memory of a C matrix contiguous?C矩阵的内存是连续的吗?
【发布时间】:2015-01-18 22:21:59
【问题描述】:

我正在尝试用 C 语言编写一个以矩阵为参数的函数。
我只会在运行时知道矩阵有多少元素(但是是 NxN 矩阵)。

因此我想知道是否有保证空间总是连续的,因此我只能询问指向第一个元素的指针。我这样声明我的矩阵:

int nodo;
scanf("%d", &nodo);
int distancias[nodo][nodo];

【问题讨论】:

  • c 数组是连续的。
  • 它是连续的。但要小心你正在使用的构造。如果 nodo 变得太大,可变长度数组 (VLA) 可能会很快耗尽您的堆栈。
  • C11 编译器也是 not required 以完全支持 VLA。它们在 C99 下是必需的,恕我直言,这有点奇怪。结果是 VLA 代码理论上可能在将来无法编译,具体取决于您选择的编译器。

标签: c matrix


【解决方案1】:

是的,它是连续的。基本上它只是distancias[nodo*nodo] 的语法糖。

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2011-07-02
    • 2016-11-04
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    相关资源
    最近更新 更多