C 多维线性阵列

C 多维线性阵列,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,我正在读这篇文章: 我想知道更多关于“线性多维数组”的知识,但我找不到任何相关的东西,我想知道你们中是否有人见过类似的东西 具体来说,我想更好地理解如何使用math访问多维数组(声明为一维)。听起来棒极了 静态分配 例如,在c语言中,如果要创建3x4数组,则需要执行以下代码: int array1[3][4]; // statically allocate 3x4 integer in stack. The memory will be organize like this: // [[0, 1

我正在读这篇文章:

我想知道更多关于“线性多维数组”的知识,但我找不到任何相关的东西,我想知道你们中是否有人见过类似的东西

具体来说,我想更好地理解如何使用math访问多维数组(声明为一维)。听起来棒极了

静态分配 例如,在c语言中,如果要创建3x4数组,则需要执行以下代码:

int array1[3][4]; // statically allocate 3x4 integer in stack. The memory will be organize like this:
// [[0, 1, 2, 3] // first row
//  [4, 5, 6, 7] // second row
//  [8, 9, 10, 11]
如果您声明一个12 int数组,则情况相同

int array2[12]; // memory will be
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
所以:
array1[2][3]==数组[2*(列数)+3]=11

两者都一样,第一个比第二个更容易阅读。编译器知道数组的维数,因此它将为您计算地址

动态分配 在这种情况下,您不知道数组的维数,所以。创建一个3x4阵列,如下所示

int **array1 = (int **) malloc(rows * sizeof(int *)); // allocate 4 pointers
for (int i = 0; i < rows; i++) {
  array1[i] = (int *) malloc(columns * sizeof(int)); // allocate memory for each row.
}

// the memory will be organized like this
// array1 [row0pointer, row1pointer, row2pointer]
// some where else in the memory: ... row0 ... row1 ... row2 ..
与n维数组相同。

静态分配 例如,在c语言中,如果要创建3x4数组,则需要执行以下代码:

int array1[3][4]; // statically allocate 3x4 integer in stack. The memory will be organize like this:
// [[0, 1, 2, 3] // first row
//  [4, 5, 6, 7] // second row
//  [8, 9, 10, 11]
如果您声明一个12 int数组,则情况相同

int array2[12]; // memory will be
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
所以:
array1[2][3]==数组[2*(列数)+3]=11

两者都一样,第一个比第二个更容易阅读。编译器知道数组的维数,因此它将为您计算地址

动态分配 在这种情况下,您不知道数组的维数,所以。创建一个3x4阵列,如下所示

int **array1 = (int **) malloc(rows * sizeof(int *)); // allocate 4 pointers
for (int i = 0; i < rows; i++) {
  array1[i] = (int *) malloc(columns * sizeof(int)); // allocate memory for each row.
}

// the memory will be organized like this
// array1 [row0pointer, row1pointer, row2pointer]
// some where else in the memory: ... row0 ... row1 ... row2 ..

n维数组也是如此。

为了使问题更易于阅读/回答,请务必按照指南所示,包括所需的行为以及您面临的具体问题和错误。非常感谢。我无法加载该网页。但是如果它解释了怎么做,你还需要知道什么?你需要问一些具体的问题。“我想更好地理解”是非常模糊和宽泛的。假设你想要一个P x Q x R矩阵的
值。可以使用
双矩阵[P][Q][R]-后者就是本文所说的“线性多维数组”。各有优势,;它们都有一些缺点。@JonathanLeffler谢谢,我开始更清楚地了解本文所讨论的线性多维数组。我想因为数据的存储方式是线性的,所以所有多维数组都是线性数组。我还可以提到,这篇文章提到了迭代这个数组的不同方法,我只是不知道迭代这个数组的方法不止一种。为了让这个问题更容易阅读/回答,如果您能够按照指南所示,并确保包括所需的行为以及您面临的具体问题和错误,我们将不胜感激。非常感谢。我无法加载该网页。但是如果它解释了怎么做,你还需要知道什么?你需要问一些具体的问题。“我想更好地理解”是非常模糊和宽泛的。假设你想要一个P x Q x R矩阵的
值。可以使用
双矩阵[P][Q][R]-后者就是本文所说的“线性多维数组”。各有优势,;它们都有一些缺点。@JonathanLeffler谢谢,我开始更清楚地了解本文所讨论的线性多维数组。我想因为数据的存储方式是线性的,所以所有多维数组都是线性数组。我还可以提到,这篇文章提到了迭代这个数组的不同方法,我只是没有意识到迭代这个数组的方法不止一种。