C++怎么操作可以实现删除数组中的某几个元素

就是比如说我先前定义了一个大小为100的数组。然后经过一次操作后我想删除前10个元素。然后第十一的元素的下标就变为0了。这个可以实现吗?... 就是比如说我先前定义了一个大小为100的数组。然后经过一次操作后我想删除前10 个元素。然后第十一的元素的下标就变为0了。 这个可以实现吗? 展开
 我来答
吹花PM
2014-05-18 · TA获得超过946个赞
知道小有建树答主
回答量:635
采纳率:0%
帮助的人:607万
展开全部
肯定可以实现的。把后90个元素依次前移,重新标记数组长度为90即可。对于这种数据长度频繁变化的情况,建议使用其它数据类型,比如vector或者链表。
经典不寂寞
推荐于2016-10-02
知道答主
回答量:8
采纳率:0%
帮助的人:5.5万
展开全部
这么做本身逻辑上就有问题,
数组的下标与数组定义相关,定义好数组之后下标也就定了,比如char a[100],
其中的a[0]一直是a[0],而a[11]一直是a[11],
a[11]和你定义一个变量x一样可以看做是一个变量名,带着下标比较别扭而已,
如果用一个指针与之相关,比如 char *pa = &a[11]; 访问p[0]也就是访问原来的a[11]了。
这样是把下标当做指针的偏移地址使用了,需要注意使用非原始地址释放内存会出错。

#include <stdio.h>
#include <stdlib.h>

#define MAX_LENGTH 100

int main()
{
char a[MAX_LENGTH] = "0123456789abcdefgh";
int *b = (int *)malloc(MAX_LENGTH * sizeof(int));
int *pb = NULL;
int i = 0;

if (NULL == b)
{
printf("内存分配失败!\n");
return -1;
}

for (i = 0; i < MAX_LENGTH; i++)
{
b[i] = i;
}

printf("old value of b[12] : %d\n", b[12]);

pb = &b[11]; // 此时pb[0] 也就是 b[11]
pb[1] = 111; // b[12]置为111

printf("new value of b[12] : %d\n", b[12]);

//free(pb); // pb指向的不是malloc时的地址,程序挂掉

free(b); // 使用原始地址free内存
b = NULL;

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2016-03-16 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2938万
展开全部
遍历一遍数组元素,
for(i=2;i<10;i++)
a[i]=a[i++];
for(i=0;i<9;i++)
printf("%d",a[i]);
就OK啦
只需把要被删除的后面每一位前移一位的就行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式