You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

结构体数组传参报错:参数类型不兼容问题排查

问题分析与解决

你遇到的这个类型不匹配错误,核心原因是参数类型完全不兼容:

  • 你的add函数定义明确要求传入的是struct Bod*(指向struct Bod的指针);
  • 但你调用时传的body[start_index]是struct Bod类型的结构体实例本身,并非指针。

具体解释

当你创建数组struct Bod body[m*n];时,body[start_index]会直接返回数组中第start_index位置的结构体对象,而add函数需要的是这个对象在内存中的地址(也就是指针)。

修复方案

只需要在调用add时,给body[start_index]加上取地址符&,把结构体实例转换成对应的指针传递即可:

add(&body[start_index]);

额外说明

从h[++nh] = s;的代码逻辑来看,h数组是用来存储结构体指针的,这个修复完全符合你的需求——它会把数组中对应结构体的内存地址存入h数组,后续你可以通过h里的指针直接访问原结构体的x、y成员。

内容的提问来源于stack exchange,提问作者Ady96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:33:04