如何删除数组最后一个元素?

是删除哦,把那个单元里面的内容给删掉。其实就是内存释放吧?一定要是动态内存才能释放吗?
int a[3] ={1,2,3}; 把3删除怎么弄?

内存释放你也不能释放一次分配中的一部分内存块,没这规矩。
作为自动型变量,最典型的是auto指针,删除是删不掉的,但是我们通常认为未一个指针赋值NULL之后,这个指针就被删除了,但是只有超出作用于这个指针才真正不存在。
所以你想把3删除的话,只能通过为其赋一个无意义的值即可,可以是特定的比如'\0',这样相当于删除了。如果你执意要进行3对应的单元的内存释放,那么你从一开始就必须分次取得动态内存,然后封装成动态数据结构,而不能用内置的数组。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-23
内存释放也不能释放一次分配中的一部分内存块,没这规矩。
作为自动型变量,最典型的是auto指针,删除是删不掉的,但是通常认为未一个指针赋值NULL之后,这个指针就被删除了,但是只有超出作用于这个指针才真正不存在。
所以想把3删除的话,只能通过为其赋一个无意义的值即可,可以是特定的比如'\0',这样相当于删除了。如果执意要进行3对应的单元的内存释放,那么从一开始就必须分次取得动态内存,然后封装成动态数据结构,而不能用内置的数组。
第2个回答  2013-02-18
你看这个定义是在栈上的, 只能把元素置0, 不能删掉. 即使是在堆上(指针动态分配)的数组也没法删掉一个元素, 只能先memcpy要保留的部分到新的数组, 在free(delete)之前的数组
第3个回答  2013-02-17
数组的内存是系统随机分配的,是不能人工操作的!如果你需要动态释放内存的话必须是人工手动分配的内存!追问

那我要删除怎么弄?

追答

int *arr[10];
int i;
for(i = 0; i < 10; i++)
{
arr[i] = (int *)malloc(sizeof(int));
*arr[i] = i+1;
}
for(i = 0; i < 10; i++)
printf("%d ", *arr[i]);
free(arr[9]);

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网