动态数组生成和数组长度改变

一、生成动态数组
有时候我们无法确定我们所需数组空间大小,这时候,我们可以使用
malloc函数。
malloc函数的使用格式一般为

int len;
int * L = (int*)malloc(sizeof(int) * len);  //len生成的数组长度,
memset(L, 0, sizeof(int) * len);       //赋0初始化
free(L);

此时L就是一个为int类型的,可以容纳len个元素的动态数组
注:malloc是按字节数生成的空间大小,不是按照数组长度;动态数组最后要free掉,这点和new生成后要delete的道理一致

二、动态改变数组大小
我们有遇到过这种情况,删除数组的某个元素,然后再打印出数组,会发现删除元素后,数组长度并没有改变,所删除的元素对应的位置是置null,打印出来后的结果为0,假如我们想让这个数组长度随着元素的删减而变化,粗暴的方法就是用一个新的数组去取代旧数组,但是其实使用realloc函数会更方便
realloc函数的使用格式一般为

realloc(L, sizeof(int) * (len - delnum));   //delnum,被删除的个数

注:对空间大小的改变同malloc,要使用字节数划定;是从最后一个元素删起,因此需要我们写一个取代算法,即

int m = delpoint;        //删除元素的序号
while(m < len)
{
	L[m] = L[m + 1];      //后取代前
	m = m + 1;
}
realloc(L, sizeof(int) * (len - delnum)); 
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中随机生成数组,可以使用random模块或numpy.random模块中的函数。在random模块中,可以使用random_int_list函数来生成一个指定范围内的随机整数数组。该函数接受三个参数,分别是起始值、结束值和数组长度。例如,random_int_list(1, 100, 10)将生成一个长度为10的整数数组,其中的元素在1到100之间。\[1\] 另外,在numpy库中,可以使用np.random.rand函数来生成一个指定长度的随机浮点数数组。当没有参数时,该函数返回一个随机浮点数;当有一个参数时,返回该参数长度大小的一维随机浮点数数组。例如,np.random.rand(10)将生成一个长度为10的随机浮点数数组,其中的元素在0.0到1.0之间。\[3\] 所以,根据你的需求,你可以选择使用random模块的random_int_list函数或numpy.random模块的np.random.rand函数来生成随机数组。 #### 引用[.reference_title] - *1* *3* [python生成随机数组](https://blog.csdn.net/healthy_coder/article/details/50502643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python如何随机生成数组](https://blog.csdn.net/weixin_39819671/article/details/111074705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值