"动态分配内存模拟多维数组"的正确术语?

Sha*_*baz 3 c c++ arrays terminology

前段时间我问了一个问题,我被告知(在提交中)使用术语"多维数组"作为这样的结构:

int **a;
Run Code Online (Sandbox Code Playgroud)

初始化如下:

a = malloc(n * sizeof(*a));
for (i = 0; i < n; ++ i)
    a[i] = malloc(m * sizeof(*a[i]));
Run Code Online (Sandbox Code Playgroud)

是误导,这是"只是一个多维数组的模拟".我不是英语母语人士,我很难搞清楚什么是正确的术语.不幸的是,抱怨这个术语的人自己也没有帮助.

果然,术语"多维阵列的仿真"太长,无法在文本/会话中实际使用.

总结一下:

  • 上面构造的适当术语是什么(特别是在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;
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 7

我总是听到这些被称为"锯齿状阵列" - 即使每个子阵列长度相同,它们可以有不同的长度,因此称为"锯齿状".(在真正的多维数组中,每个维度都有固定的大小,在这种情况下,只有第一个维度才真正固定.)