前段时间我问了一个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/