C语言统计数组元素出现次数时出现E0142错误如何解决?
E0142错误排查与解决方案
报错根因
你遇到的E0142报错是参数类型定义错误触发的:
E0142 expression must have pointer-to-object type but it has type "int"
函数第一个参数被你定义为const int array,属于普通int类型变量,只有指针、数组类型的变量才支持[]下标访问操作,因此你写array[card]时编译器无法识别该操作,抛出对应错误。
修复方案
第一步:修正参数类型
将第一个参数的类型修改为const int* array或const int array[],两种写法在函数参数场景下完全等效,均表示传入int数组的首地址,支持下标访问。
第二步:修复其他语法&逻辑错误
你当前的代码还有两处隐藏问题:
return Count语句写在for循环内部,第一次循环就会直接返回结果,无法遍历统计整个数组- 函数体缺少闭合的大括号,会触发编译语法错误
修正后的完整代码
int numOfCardInHand(const int* array, int size, int targetCard) { int Count = 0; for (int card = 0; card < size; card++) { if (array[card] == targetCard) { Count += 1; } } return Count; }
内容的提问来源于stack exchange,提问作者PartiMarti
相关产品推荐
相关产品推荐

