将3D数组的1个值分配给1D数组

时间:2014-05-19 10:46:53

标签: c arrays

我有一个3D数组arr1[16][8][9],我想将此数组的内容分配给一维数组arr2[36]。所以我在尝试:

arr2[0] = arr1[0][0][0];
arr2[1] = arr1[0][0][1];
......
arr2[8] = arr1[0][0][8];

我正在调用一个函数:

func_arr(int arr2[36], int arr1[16][8][9])

函数声明如下:

void func_arr(int arr2[36],int arr1[][8][9]);

但是数组赋值似乎无效。有什么更好的方法呢?

2 个答案:

答案 0 :(得分:0)

函数调用似乎不正确。替换下面的行

func_arr(int arr2[36], int arr1[16][8][9])

func_arr(arr2, arr1);

您的第一个函数参数的类型是int [36],并且您正在传递arr2[36]。假设arr2为int arr2[36]arr2[36]的类型为int,因此类型不匹配。此外,arr2 [36]是位于arr2结束后的地址处的int。

答案 1 :(得分:0)

为什么不使用指针?

使用函数调用

func_arr(arr2, arr1);

,函数定义为

int func_arr(int *ptr, int (*ptr2)[16][8][9])
{
    int i,j,k;
    for(i=0;i<3;i++)
    {
       for(j=0;j<3;j++)
       {
           for(k=0;k<3;k++)
           {
             *ptr = *(*((*ptr2)[i]+j)+k);
              ptr++;
           }
       }
    }

}

这会将所有3D数组值转换为1D数组