C 多维线性阵列
我正在读这篇文章: 我想知道更多关于“线性多维数组”的知识,但我找不到任何相关的东西,我想知道你们中是否有人见过类似的东西 具体来说,我想更好地理解如何使用math访问多维数组(声明为一维)。听起来棒极了 静态分配 例如,在c语言中,如果要创建3x4数组,则需要执行以下代码: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
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]或者你可以使用双矩阵[P*Q*R]代码>-后者就是本文所说的“线性多维数组”。各有优势,;它们都有一些缺点。@JonathanLeffler谢谢,我开始更清楚地了解本文所讨论的线性多维数组。我想因为数据的存储方式是线性的,所以所有多维数组都是线性数组。我还可以提到,这篇文章提到了迭代这个数组的不同方法,我只是不知道迭代这个数组的方法不止一种。为了让这个问题更容易阅读/回答,如果您能够按照指南所示,并确保包括所需的行为以及您面临的具体问题和错误,我们将不胜感激。非常感谢。我无法加载该网页。但是如果它解释了怎么做,你还需要知道什么?你需要问一些具体的问题。“我想更好地理解”是非常模糊和宽泛的。假设你想要一个P x Q x R矩阵的双值。可以使用双矩阵[P][Q][R]或者你可以使用双矩阵[P*Q*R]代码>-后者就是本文所说的“线性多维数组”。各有优势,;它们都有一些缺点。@JonathanLeffler谢谢,我开始更清楚地了解本文所讨论的线性多维数组。我想因为数据的存储方式是线性的,所以所有多维数组都是线性数组。我还可以提到,这篇文章提到了迭代这个数组的不同方法,我只是没有意识到迭代这个数组的方法不止一种。