【发布时间】:2016-06-06 10:40:48
【问题描述】:
我正在研究 C,特别是使用指针创建矩阵,而让我感到困惑的一件事是,在二维数组中 matrix[i][j] 等于
*(*(matrix+i)+j)
这是否意味着位于[3][3] 位置的元素由*(*(0+3)+3)) 给出?
更具体地说,我正在使用以下代码在 C 中编写一个矩阵:
double** makeMatrix(unsigned int rows, unsigned int cols)
{
unsigned int i;
double** matrix;
matrix = (double** ) malloc(rows * sizeof(double *));
if (!matrix) { return NULL; }/* failed */
for (i = 0; i < rows; i++)
{
matrix[i] = (double *) malloc(cols*sizeof(double));
if (!matrix[i])
return NULL;
}
return matrix;
}
因此,为数组中的每个第 i 个元素分配内存 - 这就是我们为 [i][j] 得到 ((matrix+i)+j) 的原因 - 由于每个元素都有自己的内存块这一事实?
【问题讨论】:
-
请先在网站上搜索,然后再发布问题。 stackoverflow.com/search?q=%5Bc%5D+2d+matrices
-
在你用傲慢的反驳爆发之前,我已经“在网站上搜索”了这个问题,但没有任何内容与我所问的具体匹配。
-
请澄清您当时的要求(例如,数组是如何定义的?)。你的帖子有点乱,现在,不是很有用。查看此页面以了解此处使用的降价的一些介绍:stackoverflow.com/editing-help
-
正确格式化你的队列!!
-
代码中没有二维数组,也没有可以指向一个的数组。