吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 600|回复: 6
收起左侧

[求助] 请问一个c语言问题 数组相关

[复制链接]
亲爱的魔月 发表于 2024-9-7 21:27
为啥调用下面的函数后 直接在数组尾部加数据啊  上面第一个第一个判断不是没过啊?或者是那位可以解释下怎么把数据加到最后一个的


[C] 纯文本查看 复制代码
void insert_at(DynamicArray *array, size_t index, int element)
{
  // 判断索引是否超出范围
  if (index > array->length)
    return;
  // 判断长度和容量是否相同
  if (array->length == array->capacity)
    resize_dynamic_array(array, array->capacity * 2); // 扩容
  // 从当前索引位置index向后一个一个的移动数据
  for (int i = array->length; i > index; i--)
    array->data[i] = array->data[i - 1];
  // 把新的输入存储到当前的这个索引位置
  array->data[index] = element;
  array->length++; // 长度加1
}
// 向数组尾部追加一个数据的函数
void insert_end(DynamicArray *array, int element)
{
  insert_at(array, array->length, element);
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
camuscode + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 亲爱的魔月 发表于 2024-9-7 21:28
脑子转不明白了
DEATHTOUCH 发表于 2024-9-7 22:45
代码里面判断的是 index > array->length,但是在尾部追加的时候 index == array->length,所以没有问题。
熊猫拍板砖 发表于 2024-9-8 00:39
比如,数组长度是10,index的范围是0-9
1、你传进去的是数组长度,10
第一条判断没生效,因为这里的index是10
2、然后触发了扩容,数组长度为20了(这里是因为数组长度==数组容量)
3、这里是数据迁移,触发了,因为i=20,他这里为啥这么写我没懂,因为移动了个寂寞,可能是为了防止字符串啥的做\0移动吧
4、在index下标写入数据
打完收工

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
凯少 + 1 + 1 我很赞同!
亲爱的魔月 + 1 热心回复!

查看全部评分

liuenzhuo 发表于 2024-9-8 13:19
长度和索引大小不是同一个值,是不是跟别的语言学混了
 楼主| 亲爱的魔月 发表于 2024-9-9 14:54
熊猫拍板砖 发表于 2024-9-8 00:39
比如,数组长度是10,index的范围是0-9
1、你传进去的是数组长度,10
第一条判断没生效,因为这里的index ...

好的看明白了
 楼主| 亲爱的魔月 发表于 2024-9-9 14:55
liuenzhuo 发表于 2024-9-8 13:19
长度和索引大小不是同一个值,是不是跟别的语言学混了

学的有点不扎实 已经看明白了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 08:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表