二维数组指针语法 - C.



我是C语言的新手,我们的教授给了我们一个性能任务,我们必须操作一些2D数组。我正在尝试弄清楚如何在两个数组之间正确移动值。我相信使用 *(array*i+j) 可能有助于加快速度,但我无法让它编译。我知道数组[i][j]通常是可以接受的,但我需要尽可能快地做到这一点。问题线看起来像

out[x] = *( *(in+i) + j);

我得到的错误是"从 int 类型分配给类型 int[10000] 时类型不兼容。我应该为进出做指针吗?我不允许更改实现

define N 10000
/* The input matrix */
long in[N][N];
/* The output matrix */
long out[N][N];

我确信答案是令人沮丧的显而易见的,但我的任何更改都没有奏效。我只想更改 out[x] 或 out+x 的值。

试试这个

out[column][row] = *( *(in+i) + j);

您忘记索引您要断言的数组的第二个分布。