我有两个数组如下。我正在使用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];
}
答案 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];
}