c++ - "dynamically allocated memory emulating multi-dimensional array"的正确术语?

标签 c++ c arrays terminology

前段时间我问了一个question其中我被告知(在提交中)使用术语“多维数组”作为这样的构造:

int **a;

像这样初始化:

a = malloc(n * sizeof(*a));
for (i = 0; i < n; ++ i)
    a[i] = malloc(m * sizeof(*a[i]));

具有误导性,这“只是对”多维数组的模拟。我不是以英语为母语的人,所以很难弄清楚什么是正确的术语。不幸的是,提示术语的人自己也无济于事。

果然,“模拟多维数组”这个词太长了,不能真正用在文本/对话中。

总结:

  • 上述结构的正确术语是什么(特别是在 C 语言中,如果有区别的话)?

附带问题:

  • 这个术语与语言无关吗?如果不是,它在 C++ 中是如何调用的?

注意:如果您的回答与引用文献相关联,我将非常高兴。
编辑:我了解此构造与int a[n][m]; 之间的区别。这不是问题。

更新

分配的内存不一定是有规律的。这种结构更精确:

a = malloc(n * sizeof(*a));
for (i = 0; i < n; ++ i)
  if (needed[i])
    a[i] = malloc(m[i] * sizeof(*a[i]));
  else
    a[i] = NULL;

最佳答案

我一直听说这些被称为“锯齿状数组”——即使每个子数组的长度相同,它们也可以具有不同的长度,因此术语“锯齿状”。 (在真正的多维数组中,每一维都有固定的大小,在这种情况下只有第一维是真正固定的。)

关于c++ - "dynamically allocated memory emulating multi-dimensional array"的正确术语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11572822/

相关文章:

c# - 无符号整数 (c++) 与 uint (c#)

arrays - 试图从数组中求和

javascript - angularjs http post 到特定元素处的 json 数组

python - 为什么第一个字节打印为 (b'c\x..) 而不是 (b'x63\x..)?

c++ - 将项目移植到我的笔记本电脑会导致黑屏

c++ - 为什么 endl(std::cout) 编译

c++ - 为什么在新的 IDE 中必须使用命名空间标准,而用 Turbo C++/Borland C++ 编写的程序不需要命名空间标准?

c - 如何在 OpenCL 中将有符号字符转换为无符号字符?

c - 阅读此文本文件时无法找到出错的地方

c - scanf添加多个字符串时出现问题