我有5个1D阵列。我想将它们合并为一个5 * 5阵列(2 D阵列)。我们怎么做?(使用C)
我尝试了什么:
int arr[5][5] = {*arr1,*arr2,*arr3,*arr4,*arr5};
为什么这不起作用?
答案 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];
在第一种情况下,您只声明一个指针,在第二种情况下,您声明一个指针并分配内存。