结构体数组传参报错:参数类型不兼容问题排查
问题分析与解决
你遇到的这个类型不匹配错误,核心原因是参数类型完全不兼容:
- 你的
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
相关产品推荐
相关产品推荐

