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

调用myFunc第5参数报int转指针无类型转换错误如何解决

问题原因
  • 首先C语言有固定的函数形参类型转换规则:声明为数组类型的形参会自动退化为对应的指针类型,你定义的myFunc第五个形参是int [][2],编译器实际会处理为int (*)[2],也就是指向长度为2的int数组的指针,要求传入对应类型的行指针。
  • 你调用时传入的matrix[i][2]存在两处错误:
    1. 类型不匹配:matrix[i][2]是单个int类型的元素值,不是指针,完全不符合形参的类型要求,这就是编译器抛出expected ‘int (*)[2]’ but argument is of type ‘int’错误的直接原因。
    2. 下标越界:你的数组第二维长度为2,合法下标只有0和1,访问下标为2的元素本身属于越界访问,会触发未定义行为。
修复方案

如果你需要每次循环把matrix的第i行传入myFunc,只需要把调用代码的第五个参数改为matrix + i或者&matrix[i]即可,修改后的调用代码如下:

for(int i = 0; i < 10; i++){
    myFunc(a, b, c, d, matrix + i);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:57:02