不久前,我在一个问题中询问了一些内容,其中在提交的回答中告诉我,使用术语“多维数组”来描述以下构造是不准确的:
int **a;
初始化方法如下:
a = malloc(n * sizeof(*a));
for (i = 0; i < n; ++ i)
a[i] = malloc(m * sizeof(*a[i]));
这里的术语“emulation of multi-dimensional array”是误导性的,只是一个多维数组的“模拟”。作为非英语母语者,我很难弄清楚什么是正确的术语。不幸的是,抱怨术语的人自己也没有提供帮助。
确实,术语“emulation of multi-dimensional array”太长了,实际上在文本/对话中不太可能使用。
总之:
- 上面的结构的正确术语是什么(特别是在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;