在c中移动数组的元素

时间:2014-10-26 10:34:06

标签: c arrays multidimensional-array

我有两个数组如下。我正在使用C语言

    int array1[7][8];
    int array2[8][7];

数组1的所有元素都有一些值

我想将数组1的所有值分配给数组2。因为两个数组总共有56个元素。值应该能够适合。我想将数组1的所有56个值分配给数组2,这样如果它们被视为1维数组,那么它们应该看起来相同 我试图迭代从0到56的循环并尝试关联他们的索引,但无法弄清楚。 我试过这样的事情,但我在某个地方犯了错误

  for (i = 0 ; i < 56 ; i ++)
  {
            array2[i / 7 ][ i % 7 ] = array1[ i / 6 ][ i % 6];
  }

3 个答案:

答案 0 :(得分:2)

使用两个循环:

for ( size_t i = 0 ; i < 7 ; i++)
{
   for ( size_t j = 0 ; j < 8 ; j++)
   {
        array2[j][i] = array1[i][j];
   }
}

只需一个循环:

for ( size_t i = 0 ; i < 56 ; i++ )
{
    array2[i / 7 ][ i % 7 ] = array1[ i / 8 ][ i % 8 ] ;        
}

答案 1 :(得分:2)

这不是数组元素的换位!

忽略维度和memmove()周围的数据。

memmove(array2, array1, sizeof array1);

memmove()并不关心数组元素的布局,标准保证所有数组元素(甚至是多维数组)都是顺序的。

答案 2 :(得分:1)

应该是

for (i = 0; i < 7*8; ++i)
{
  array2[i / 7][i % 7] = array1[i / 8][i % 8];
}