【发布时间】:2012-07-19 08:16:40
【问题描述】:
前段时间我问过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;
【问题讨论】:
-
旁注(除了术语):您确实明白这与大小为 nxm 的二维数组之间的区别是什么,对吧?
-
@DavidRodríguez-dribeas,当然可以。
标签: c++ c arrays terminology