C ++通过内存地址将多维数组更改为一维数组

时间:2018-04-14 06:57:21

标签: c++ arrays memory

我在C ++书中读到了这一点 “即使C ++使我们能够对多维数组进行建模,包含数组的内存也是一维的。因此编译器将多维数组映射到内存空间,只扩展一个方向。”

我想,如果我想将n维数组更改为1维数组(按升序排序),为什么我只调用nd数组内存地址(以1-d格式存储)并刚刚投入新的一维数组?

(通常我用于声明将n-d数组改为1-d数组)

有可能吗?如果可能的话,提供简单的示例代码将会很感激。

2 个答案:

答案 0 :(得分:1)

指向数组中第一项的指针也是指向被视为一维数组的完整数组的指针。项目在内存中连续存储的保证来自sizeof要求, n 项目数组的大小是 n 的倍数。 item,当项目本身就是一个数组时。

答案 1 :(得分:1)

,可以将n维数组转换为1维数组。

让我以二维数组的例子来表示:

for (i = 0; i < n; i++)
{
    for (j = 0; j < m; j++)
    {
        b[i * n + j] = a[i][j];
    }
}