我有两个数组:一个是2D,arr,另一个是1D,ar,例如:int arr[1][18]; int ar[18];
我想把arr[1][18]复制到ar[18]"而不使用循环"&";。我该怎么做?如果有人能解释一下,我将不胜感激。提前非常感谢。。。
如果不想使用循环,可以使用函数memcpy
:
#include <stdio.h>
#include <string.h>
int main( void )
{
//declare and initialize the 2D array
int arr_2D[2][18] = {
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 },
{ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36 }
};
//declare the 1D array
int arr_1D[18];
//copy arr_2D[1] to arr_1D (without a loop)
memcpy( arr_1D, arr_2D[1], sizeof *arr_2D );
//print the result of the copy (in a loop)
for ( int i = 0; i < 18; i++ )
{
printf( "%d ", arr_1D[i] );
}
printf( "n" );
}
该程序具有以下输出:
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
如您所见,arr_2D[1]
在没有循环的情况下成功复制到arr_1D
。循环仅用于打印结果。
然而,值得注意的是,memcpy
很可能在内部使用某种循环。因此,即使代码没有循环,从技术上讲,您仍然在使用循环。如果没有某种循环,就没有办法解决这个问题,除非展开循环,比如:
arr_1D[0] = arr_2D[1][0];
arr_1D[1] = arr_2D[1][1];
arr_1D[2] = arr_2D[1][2];
arr_1D[3] = arr_2D[1][3];
arr_1D[4] = arr_2D[1][4];
arr_1D[5] = arr_2D[1][5];
arr_1D[6] = arr_2D[1][6];
arr_1D[7] = arr_2D[1][7];
arr_1D[8] = arr_2D[1][8];
arr_1D[9] = arr_2D[1][9];
arr_1D[10] = arr_2D[1][10];
arr_1D[11] = arr_2D[1][11];
arr_1D[12] = arr_2D[1][12];
arr_1D[13] = arr_2D[1][13];
arr_1D[14] = arr_2D[1][14];
arr_1D[15] = arr_2D[1][15];
arr_1D[16] = arr_2D[1][16];
arr_1D[17] = arr_2D[1][17];