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

C++ changing multi-Dimension Array to one-D array by memory address

本文关键字:数组 一维数组 内存 地址 C++      更新时间:2023-10-16

我在C++书中读到,"尽管C++使我们能够对多维数组进行建模,但包含数组的内存是一维的。因此,编译器将多维数组映射到内存空间,内存空间仅扩展一个方向。

我想

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

(通常我用 for 语句将 n-d 数组更改为 1-d 数组(

如果可能的话,提供简单的示例代码将不胜感激。

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

是的,可以将 n 维数组转换为一维数组。

让我以二维数组为例来说明:

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