首页 > 解决方案 > 将结构数组传递给C中的排序函数

问题描述

我正在尝试将一个数组传递struct给一个可以使用它并修改其内容的函数。我已经阅读了很多文章,但我仍然找不到我需要的东西。

我需要将这个数组传递struct给一个函数并使用这个数组的值,并且修改需要是全局修改。

在这里,我实际上是在对这个结构区域的值进行排序;该程序给了我这个警告并崩溃:

警告:从不兼容的指针类型 [-Wincompatible-pointer-types] 传递“insersort”的参数 1|

struct rectangle{
    char name[MAXC];
    float x;
    float y;
    float area;
    float perimeter;
};

void insersort(struct rectangle *rect[],int k)
{
    int i,j;
    float x;
    for(i=1;i<k;i++)
    {
        x=rect[i]->area;
        j=i-1;
        while(j>=0 && x<rect[j]->area)
        {
            rect[j+1]->area=rect[j]->area;
            j--;
        }
        rect[j]->area=x;
    }
    return;
}
..... 

我这样调用函数:

struct rectangle rect[MAX];
insersort(rect,k); 

标签: arrayscstruct

解决方案


你写了

void insersort(struct rectangle *rect[],int k)

并且 insertof 的主体写得好像你的意思

void insersort(struct rectangle (*rect)[],int k)

也就是说,指向的指针数组rect

但你可能打算把它写成

void insersort(struct rectangle rect[],int k)

而不是->在里面使用insertof


推荐阅读