【发布时间】:2014-01-24 09:39:31
【问题描述】:
例如,我有一个包含 20 个元素的 1 维数组,我想将其重塑为 4x5 数组,因此,我可以将其传递给具有如下签名的函数。 . . .
void func(type** inArray, int xDimension, int yDimension)
我想挤进myArray 的数据是type* 类型的。为了重塑阵列,我需要做什么?我不想分配一个新数组并使用循环来填充新数组。有什么方法可以将数据转换到位?
我得到的最接近的是这样的。 .
float one[20];
float* two[] = {one, one+5, one+10, one+15};
func( two, 4, 5);
【问题讨论】:
-
@moeCake 这个解决方案有多远?您应该已经知道 4x5 与 1x20 的数组大小相同。那么这在多大程度上改变了秩序?!
-
不,您不能将其投射到位。您必须在某处分配一个指针数组,例如在您的示例中,然后填充它。您可以编写一个函数来填充现有数组(必须具有正确的大小),或者编写一个函数到
malloc()并填充一个新数组。