我正在编写一个方法,用于交换二维数组的元素。我已经寻找了这方面的答案,但好像没有很好的答案来解决这种类型的交换问题。与传统的交换不同之处在于,我不是试图交换长度为2的数组中的整数,而是试图交换一对长度为2的数组,更具体地说是它们的指针。我对C语言还比较陌生(试图从Java转换)。当我编译下面的代码时,会收到一个警告“assignment makes integer from pointer without a cast”。非常感谢任何帮助。预先致谢。
void swap(int array[][2], int indexA, int indexB)
{
int *temp = array[indexA];
*array[indexA] = array[indexB];
*array[indexB] = temp;
}
编辑:我也尝试了下面的代码来替换最后两行(不包括括号),但这导致编译器报错“将类型为‘int *’的值分配给类型为‘int [2]’的变量不兼容”。
array[indexA] = array[indexB];
array[indexB] = temp;
编辑:下面是数组声明,swap函数作为快速排序实现的一部分被调用。调用swap方法的sort方法使用与我在swap中使用的参数声明相同类型(即“int array [][2]”)。
int counts[256][2];
int **base;
用于你的二维数组,而你显然现在没有这样做,因为你发布了调用方参数。(这是一件好事。你的是一个真正的二维连续数组)。 - WhozCraig