我想通过函数来改变数组的大小,不知道能不能实现。
可以给我写个例子吗?谢谢了
给你贴了。
我用的C++,不知道是否可以。
我运行的时候没错~~.仔细看,确实错了,分配_new的时候应该new int[old_len+1].
你的代码有问题.在insert里让a=new T[++n]并不会使函数外的a得到新内存.
应该 void insert(T **a,...);
然后让*a= new T[++n];
或者干脆 T* insert(...) return 你在函数内新的内存.
#include<stdio.h>
int* insert(int* old,int insert_index,int new_num,int old_len)
{
int* _new = new int[old_len];
for(int i=0;i<insert_index;++i)
_new[i] = old[i];
}
_new[insert_index] = new_num;
for(int i=insert_index+1;i<old_len+1;i++)
_new[i] = old[i-1];
return _new;
int main()
int a[] = {1,2,3,4,5};
int *b = insert(a,2,6,5);
for(int i=0;i<6;i++)
printf("%d", b[i]);
delete []b;
return 0;
但是这个程序有问题。应该是内存分配的问题。
#include<iostream>
看过STL的源码?
他的资源管理就是动态的
你的数组如何定义的
你要說你用的什麼編程語言。Java中的ArrayList不就是這樣搞的?還有VB中的Redim Preserve。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(12)
可以给我写个例子吗?谢谢了
给你贴了。
引用来自“欣欣向荣”的答案
我用的C++,不知道是否可以。
我运行的时候没错~~.仔细看,确实错了,分配_new的时候应该new int[old_len+1].
引用来自“周翼翼”的答案
你的代码有问题.在insert里让a=new T[++n]并不会使函数外的a得到新内存.
应该 void insert(T **a,...);
然后让*a= new T[++n];
或者干脆 T* insert(...) return 你在函数内新的内存.
#include<stdio.h>
int* insert(int* old,int insert_index,int new_num,int old_len)
{
int* _new = new int[old_len];
for(int i=0;i<insert_index;++i)
{
_new[i] = old[i];
}
_new[insert_index] = new_num;
for(int i=insert_index+1;i<old_len+1;i++)
{
_new[i] = old[i-1];
}
return _new;
}
int main()
{
int a[] = {1,2,3,4,5};
int *b = insert(a,2,6,5);
for(int i=0;i<6;i++)
printf("%d", b[i]);
delete []b;
return 0;
}
但是这个程序有问题。应该是内存分配的问题。
#include<iostream>
看过STL的源码?
他的资源管理就是动态的
你的数组如何定义的
我用的C++,不知道是否可以。
你要說你用的什麼編程語言。Java中的ArrayList不就是這樣搞的?還有VB中的Redim Preserve。
引用来自“欣欣向荣”的答案
我用的C++,不知道是否可以。