提问人:kerx1998 提问时间:12/5/2020 最后编辑:Remy Lebeaukerx1998 更新时间:12/5/2020 访问量:39
在另一个函数中初始化的 ref 参数传递将产生无效的转换错误
A pass by ref parameter that is initialized in another function produces invalid conversion error
问:
#include<iostream>
//swap function
void swap(int &x, int &y )
{
int temp;
temp = x;
x = y;
y = temp;
}
//choosing the middle index of the array as the pivot
void choosepivot(int array[],int first,int last)
{
swap(array[first],array[(first+last)/2]);
}
//assigns first and last
void firstlastAssign(int array[],int & first, int & last)
{
first = 0;
last = sizeof(array)-1;
}
// partitioning function
void partition(int array[], int first, int last, int & pivotIndex)
{
firstlastAssign(array,first,last);
choosepivot(array,first,last);
int pivot = array[first];
int lastS1 = first;
for(int firstUnknown = first+1; firstUnknown<=last; ++firstUnknown)
{
if(array[firstUnknown] < pivot)
{
++lastS1;
swap(array[firstUnknown],array[lastS1]);
}
}
swap(array[first],array[lastS1]);
pivotIndex = lastS1;
}
//quicksorting part
void quickSort(int array,int first, int last)
{
int pivotIndex;
if(first<last)
{
partition(array,first,last,pivotIndex);
quickSort(array,first,pivotIndex);
quickSort(array,pivotIndex+1,last);
}
}
int main(){
int first,last;
int ornek[] = {5,87,3,8,0,12,34,6,7,11,73,83,94,92,66};
quickSort(ornek,first,last);
int *p;
p = ornek;
for(i=0;i<=sizeof(ornek);++i)
{
std::cout << p;
++*p;
}
return 0;
}
此代码应该可以正常工作,因为我引用了原始值。但是,结果会产生错误:pivotIndex
从“int”到“int*”的转换无效
但是我看不出我在将整数转换为指针时犯了什么错误,也不知道检测问题出在哪里的调试方法。
答:
0赞
Usama Javed
12/5/2020
#1
将快速排序功能更改为接受数组而不是整数。
void quickSort(int array[], int first, int last)
{
int pivotIndex;
if (first < last)
{
partition(array, first, last, pivotIndex);
quickSort(array, first, pivotIndex);
quickSort(array, pivotIndex + 1, last);
}
}
评论
void quickSort(int array,int first, int last)
此函数不接受数组输入array
int[]
partition
array
int
void quickSort(int array, ...
int array[]