arrays - 将结构数组传递给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);
解决方案
你写了
void insersort(struct rectangle *rect[],int k)
并且 insertof 的主体写得好像你的意思
void insersort(struct rectangle (*rect)[],int k)
也就是说,指向的指针数组rect
但你可能打算把它写成
void insersort(struct rectangle rect[],int k)
而不是->
在里面使用insertof
推荐阅读
- openshift - `oc cluster up` 时的问题
- c# - 如何为异常端点 api 配置设置路由?
- java - 怎么处理用硒掩盖其他元素,检查其他答案没有任何帮助
- mariadb - 具有空值的 Mariadb 查询变量不返回任何内容
- javascript - 用于处理错误嵌套标签的 HTML“采用代理”算法的实现
- javascript - 如何仅使用 Jquery 在页面加载之前隐藏 div
- css - 将链接包裹在图像周围会破坏 flexbox 布局并导致浏览器呈现怪癖
- haskell - 如何在 Haskell 中修复“错误:在输入 '=' 上解析错误”
- qt - GStreamer / QML 应用程序中的多个 4K 视频 = 黑色闪烁
- swift3 - Cloud Kit如何在出错时重新获取记录