C语言使用multidimensional array的行顺序
要用单维数组来模拟这个,可以将行索引乘以宽度,然后添加列索引:
int array[width * height]; int SetElement(int row, int col, int value) { array[width * row + col] = value; }
例如:我们想要表示一个SIZE_X和SIZE_Y大小的二维数组。 这意味着我们将有MAXY连续的MAXX大小的行。 因此设定的function是
void set_array( int x, int y, int val ) { array[ x * SIZE_Y + y ] = val; }
得到的将是:
int get_array( int x, int y ) { return array[ x * SIZE_Y + y ]; }
二维数组索引重新计算为一维数组索引的典型公式为:
index = indexX * arrayWidth + indexY;
或者你可以使用
index = indexY * arrayHeight + indexX;
(假设arrayWidth是沿X轴测量的, arrayWidth是沿着Y轴的)
当然,可以提出许多不同的公式来提供可选的独特映射,但通常不需要。
在C / C ++语言中,内置的multidimensional array存储在内存中,这样最后一个索引变化最快,这意味着对于声明为
int xy[10][10];
元素xy[5][3] xy[5][4]在内存中紧跟着xy[5][4] 。 您可能也