你好我想将返回数组从方法分配到数组。我的代码在这里。如何将数组分配到这样的数组?
方法更改代码:
int* change (int array[], int index1, int index2) {
int temp;
temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
iter++;
return array;
}
方法在这里结合代码:
static void combine(int mat[], int len) {
if(ok)
return;
int array[len];
*array = *mat;
if (len <= sat * sut) {
for (int i = len; i < sat * sut - 1; i++) {
for (int j = i; j < sat * sut; j++) {
// this is error row
combine(array, len + 1);
array = change(array, i, j);
if (isAcceptable(array) == "ACCEPTABLE") {
int accepted[sat*sut];
*accepted = *array;
ok = true;
return;
}
}
}
} else
return;
}
错误行在这里:
array = change(array, i, j);
错误:[错误]分配&#39; int *&#39;中的不兼容类型to&#39; int [(((sizetype)(((ssizetype)len)+ -1))+ 1)]&#39;
我该如何解决?
答案 0 :(得分:1)
array = change(array, i, j);
正如错误消息所示,您正在尝试分配指向数组的指针,这没有任何意义。没有必要;只需调用函数来更改数组:
change(array, i, j);
并将函数更改为返回void
- 简单地传回其中一个参数是没有意义的,因为调用者已经知道它是什么。或者根本不打算写一个函数:
std::swap(array[i], array[j]);
此外,这看起来有点狡猾:
*array = *mat;
也许您认为这会将整个数组复制到array
;它没有,它只复制第一个元素。要复制数组,请执行
std::copy(mat, mat+len, array);
或者更好的是,使用标准容器而不是非标准可变长度数组:
std::vector<int> array(mat, mat+len);