前段时间我问了一个问题,我被告知(在提交中)使用术语“多维数组”来表示这样的构造:
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;