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

C语言数组去重代码求审核:sizeof用于数组下标是否合理

代码审核结果

存在的问题

  • sizeof用法逻辑错误:sizeof(a)返回的是数组a占用的总字节数,不是数组元素个数,获取元素个数的正确写法是sizeof(a) / sizeof(a[0])。你用sizeof(a)定义flag数组长度的语法本身合规,但注释中关闭的标记逻辑用a[i]作为flag下标完全不可行:int类型取值范围远大于flag数组长度,只要a[i]大于等于flag长度或为负数,就会触发越界访问,直接导致程序崩溃。
  • 去重逻辑不符合通用需求:当前启用的逻辑仅能去除相邻重复元素,无法处理非相邻的重复值,比如示例数组中两处不相邻的2,运行后输出仍然会保留两个2。如果你的需求仅为相邻去重,当前逻辑没问题,否则需要调整实现方案。
  • 标记法设计不合理:如果要实现全量去重,不能直接用普通数组当哈希表存储int类型的标记,int取值范围为[-2^31, 2^31-1],根本不可能在栈上开辟覆盖整个取值范围的数组,会直接栈溢出。
  • 冗余语法:main函数结束的大括号后多写了一个分号,C语法虽允许,但属于冗余写法,不符合通用编码规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:54:03