【发布时间】:2020-10-24 15:21:55
【问题描述】:
我正在尝试将struct 的数组传递给与它一起工作并修改其内容的函数。我已经阅读了很多文章,但仍然找不到我需要的内容。
我需要将这个struct 的数组传递给一个函数并使用这个数组的值,并且修改需要是全局 修改。
在这里,我实际上是在对这个结构区域的值进行排序;该程序给了我这个警告并崩溃:
警告:从不兼容的指针传递 'insersort' 的参数 1 类型 [-Wincompatible-pointer-types]|
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);
【问题讨论】:
-
间接太多。将第一个函数参数定义为
struct rectangle rect[]或struct rectangle *rect,但不能同时定义两者。你的struct rectangle *rect[]是一个指针数组。 -
^^^^^ 例如在
insersort中,参数应为struct rectangle rect[],所有rect[n]->应更改为rect[n].