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

从数组中删除元素后,被移除的元素值存储在什么位置?

问题分析

你提供的删除代码本身存在逻辑错误,并没有实现预期的「下标k之后元素依次前移一位」的效果,我们分两种情况说明:

情况1:运行你给出的错误代码

你写的循环逻辑为:

for(i=k;i<size-1;i++)
a[k]=a[k+1];
size=size-1;

运行过程如下:

  • 初始状态:数组值为[0,1,2,3,4,5],k=3,size=6,待删除的原始值3存储在a[3]位置
  • 第一次循环(i=3):执行a[3] = a[4],a[3]的值直接被覆盖为4,原始值3直接被销毁,没有写入数组的任何其他位置
  • 第二次循环(i=4):执行a[3] = a[5],a[3]的值被再次覆盖为5
  • 最终size变为5,有效数组范围是下标0~4,对应值为[0,1,2,5,4]

情况2:你实际想写的是正确的元素前移代码

如果是你手误写错了赋值下标,正确删除逻辑应该是:

for(i=k;i<size-1;i++)
a[i]=a[i+1];
size=size-1;

运行过程如下:

  • 第一次循环(i=3):执行a[3] = a[4],a[3]的值被覆盖为4,原始值3直接被销毁,没有存储到数组的其他位置
  • 第二次循环(i=4):执行a[4] = a[5],a[4]的值被覆盖为5
  • 最终数组原始存储区域的值为[0,1,2,4,5,5],size变为5,有效范围为下标0~4

结论

不管是你给出的错误代码还是正确的前移删除逻辑,原下标k=3位置的元素值3都会在第一次循环赋值时被直接覆盖,不会被移动到数组的任何位置存储。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:36:06