合并2d数组以获得c中的3d数组

时间:2015-01-17 11:32:36

标签: c

我有5个1D阵列。我想将它们合并为一个5 * 5阵列(2 D阵列)。我们怎么做?(使用C)

我尝试了什么:

int arr[5][5] = {*arr1,*arr2,*arr3,*arr4,*arr5};

为什么这不起作用?

3 个答案:

答案 0 :(得分:2)

我解决方法与此相同:

void setArr (int i, int arr[5][5], int arri[5])
{
  int j;
  for (j=0;j<5;j++)
  {
     arr[i][j] = arri[j];
  }
}

//在主函数

int main ()
{
 ... 
 int i;
 for (i=0;i<5;i++)
  {
     switch (i)
      case 0: setArr(i,arr,arr1);
          break;
      case 1: setArr(i,arr,arr2);
          break;
      case 2: setArr(i,arr,arr3);
          break;
      case 3: setArr(i,arr,arr4);
          break;
      default: setArr(i,arr,arr5);
          break;
  }
}

答案 1 :(得分:1)

你有两个问题。第一个是数组衰减到指针,所以当你执行*arr1时,你得到指针 arr1指向的值,这是数组中的第一个元素{{ 1}}。

第二个问题是,由于数组衰减到指针,你需要创建一个指针数组。

所以你应该这样做。

arr1

答案 2 :(得分:0)

它不起作用,因为

int *arr;

不等于

int arr[5];

在第一种情况下,您只声明一个指针,在第二种情况下,您声明一个指针并分配内存。