c语言中的赋值和比较指针
我的分区函数中出现一个错误,如下所示:c语言中的赋值和比较指针,c,pointers,function-pointers,void,void-pointers,C,Pointers,Function Pointers,Void,Void Pointers,我的分区函数中出现一个错误,如下所示: assignment makes integer from pointer without a cast v= array[low]; comparison between pointer and integer [-Werror] 这就是我在配分函数中得到的错误。请帮忙 void quickSort(void *array[], int low, int high) { int p; if(low < high) {
assignment makes integer from pointer without a cast
v= array[low];
comparison between pointer and integer [-Werror]
这就是我在配分函数中得到的错误。请帮忙
void quickSort(void *array[], int low, int high)
{
int p;
if(low < high)
{
p= partition(*array, low, high);
quickSort(array, low, p-1);
quickSort(array, p+1, high);
}
}
int partition(void *array[], int low, int high)
{
int v, i, j, temp;
v= array[low];
i=low;
j=high+1;
do
{
do
i++;
while(array[i]<v && i <=high);
do
j--;
while(v<array[j]);
if(i<j)
{
temp =array[i];
array[i] = array[j];
array[j] = temp;
}
}while(i<j);
array[low] = array[high];
array[high] = v;
return(j);
}
void快速排序(void*array[],int-low,int-high)
{
INTP;
如果(低<高)
{
p=分区(*阵列,低,高);
快速排序(数组,低位,p-1);
快速排序(数组,p+1,高);
}
}
int分区(void*数组[],int低,int高)
{
内部v、i、j、温度;
v=阵列[低];
i=低;
j=高+1;
做
{
做
i++;
而(array[i]array
是指针数组,因此array[low]
是指针;您不能有意义地将其与v
中的整数进行比较。您需要取消对指针的引用以获取值。要以int
的形式访问它们,您需要强制转换指针类型
v = *(int*)array[low];
数组
的所有其他用途都需要进行类似的修改,例如:
while (*(int*)array[i] < v && i <= high)
while(*(int*)数组[i]
来自此行v=array[low];
这是因为array
是一个void
指针数组(即array[low]
也是一个void
指针),而v是int
。所以看看你正在做的类型
int = void*
因此,正如错误所说-您有一个指针(void指针)并从指针生成int。这是非法的
指针和整数[-Werror]之间的比较
来自以下几行:
while(array[i]<v && i <=high);
....
while(v<array[j]);
两个while
语句类似
也就是说,我在你的代码中看到了一些我觉得奇怪的东西
例如:
array[high] = v;
我不确定您在这里尝试的是什么,但仍然存在类型不匹配。array
是指向void
的指针数组。将指向void
的指针分配给整数,您希望得到什么?int分区(void*array[],int-low,int-high);{
不是有效的代码。发布真实代码及其用法。你说它不是真实代码是什么意思?这是我收到的原型,我无法更改它。
array[high] = v;