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)
是误导,这是"只是一个多维数组的模拟".我不是英语母语人士,我很难搞清楚什么是正确的术语.不幸的是,抱怨这个术语的人自己也没有帮助.
果然,术语"多维阵列的仿真"太长,无法在文本/会话中实际使用.
总结一下:
问题:
注意:如果您的答案与参考文献相关联,我会很高兴.
编辑:我理解这个构造和之间的区别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)
我总是听到这些被称为"锯齿状阵列" - 即使每个子阵列长度相同,它们也可以有不同的长度,因此称为"锯齿状".(在真正的多维数组中,每个维度都有固定的大小,在这种情况下,只有第一个维度才真正固定.)