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;