社区
C语言
帖子详情
怎么改变数组a的大小
wowowowo
2003-10-02 12:06:46
编一个函数把数组a的大小从size变成ToSize。
...全文
214
19
打赏
收藏
怎么改变数组a的大小
编一个函数把数组a的大小从size变成ToSize。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Wolf0403
2003-10-03
打赏
举报
回复
void ChangeSize1D(T *&a,int size,int ToSize){
if(size>ToSize){
cerr<<"size>ToSize"<<endl;
exit(1); // 改成 return;
}
int *b=new int[4]; // What's the 4 mean? Should be =new int[ToSize]
for(int i=0;i<size;i++){
b[i]=a[i];
}
delete []a;
a=b;
}
而且按照这个写法,原先所有指向该数组的指针全部成为野指针了。
建议先拷贝到临时数组,然后用 placement new 进行重新分配、复制。
wowowowo
2003-10-03
打赏
举报
回复
我写的一个函数把数组a的大小从size变成ToSize 大家帮我看看有错吗?
#include<iostream>
using namespace std;
template<class T>
void ChangeSize1D(T *&a,int size,int ToSize){
if(size>ToSize){
cerr<<"size>ToSize"<<endl;
exit(1);
}
int *b=new int[4];
for(int i=0;i<size;i++){
b[i]=a[i];
}
delete []a;
a=b;
}
void main()
{
int *a=new int[3];
a[0]=0;a[1]=1;a[2]=2;
cout<<a[0]<<a[1]<<a[2]<<endl;
ChangeSize1D(a,3,4);
a[3]=3;
cout<<a[0]<<a[1]<<a[2]<<a[3]<<endl;
delete []a;
}
Wolf0403
2003-10-03
打赏
举报
回复
栈上的数组是没法更改大小的
堆上的数组可以通过 placement new 来重新分配,等于在指定的位置重新分配。TC++PL 只说了 placement object ,没有提到 placement array。不过我猜测整个数组就是在原来位置被重新分配,数据没有保留。
如果没记错,C 的 ralloc 是保留原来数据的
elvahuang
2003-10-03
打赏
举报
回复
这样定义的数组 大小没法改了吗
int a[10];
对 这是被称为静态分配 固定了的 是不能改变的 原因是编译...
junmayang
2003-10-03
打赏
举报
回复
数组大小从定义开始不能变的吧
wowowowo
2003-10-03
打赏
举报
回复
这个呢?
#include<iostream>
using namespace std;
template<class T>
void ChangeSize1D(T *&a,int size,int ToSize){
if(size>ToSize){
cerr<<"size>ToSize"<<endl;
return;
}
T *b=new(a) T[ToSize];
a=b;
}
void main()
{
int *a=new int[3];
int *v=a;
a[0]=0;a[1]=1;a[2]=2;
cout<<a[0]<<a[1]<<a[2]<<endl;
cout<<v[0]<<v[1]<<v[2]<<endl;
ChangeSize1D(a,3,4);
a[3]=3;
cout<<a[0]<<a[1]<<a[2]<<a[3]<<endl;
cout<<v[0]<<v[1]<<v[2]<<v[3]<<endl;
}
siegf
2003-10-03
打赏
举报
回复
为什么不用vector 呢 不停地 push_back 不就解决了,多省心啊。
lemon520
2003-10-02
打赏
举报
回复
参考vector呀,多方便!
wowowowo
2003-10-02
打赏
举报
回复
delete [] a 适用于动态分配的数组吧
yjf7888
2003-10-02
打赏
举报
回复
指针可以realloc,数组可能不行哦。
darcymei
2003-10-02
打赏
举报
回复
dele[]a
a=new ELEM[ToSize]
wxt2301
2003-10-02
打赏
举报
回复
由数组的物理存储结构决定。如果你在C中直接用类似int a[2],那么就不能改变的。如果你想改变,你需要自建数据结构!看一下数据结构的书就明白了。
danielhf
2003-10-02
打赏
举报
回复
1, 对栈中的数组, 重新建一个tosize大小的数组,把原来的拷过来.
2, 对堆中的数组, 直接分配即可 T *a = new T[tosize];
wenjhua
2003-10-02
打赏
举报
回复
//
dele[]a
a=new ELEM[ToSize]
一楼的好象是错解.
我怎么试了半天还是没有成功啊
好象这个int a[10]
是不能改的吧
如果是 指针的话就行
!~~~~等待高人
努力学习的小白小白小白
2003-10-02
打赏
举报
回复
你可以使用
char *array=new char[size];类似于array【size】;不过使用完了应该delete 【】array
现在你可以这样
array=realloc(array,Tosize);
最后delete 【】array;
xghost
2003-10-02
打赏
举报
回复
用容器类vector
wowowowo
2003-10-02
打赏
举报
回复
这样定义的数组 大小没法改了吗
int a[10];
wenkejiujiu
2003-10-02
打赏
举报
回复
在ANSI C89中如果是数组,一旦定义了数组的大小,就改边不了了
如果在c中要改变使用的数据存储大小,可以有很多方法,比如动态分配
还有在c++中就更方便了!
rockhard
2003-10-02
打赏
举报
回复
如果数组定义形式如:
int a[20];
想增大a所指的内存区大小基本上不可能。
PHP7
数组
精讲【king】
由King老师精心录制的PHP7
数组
详解,主要介绍什么是
数组
,以及
数组
的作用,及分类,并深度剖析
数组
的几种形式,如何使用,重点剖析如何遍历
数组
,还给大家归纳总结了
数组
中常用API,后通过一个实战小例子,将
数组
中...
动态调整
数组
的
大小
我们在使用
数组
时,如果设置长了,短了都不太合适,甚至还需要在运行时(或者事先已经定义了长度)
改变
一个定长
数组
的
大小
。在以下的代码中给出注释,请参看!一、定义一个新的
数组
int [] a = {1, 2, 3, 4, 5}; //...
数组
的使用及
数组
的
大小
文章目录前言一、通过下标使用二、遍历
数组
三、元素赋值四、
数组
的
大小
1.
数组
的
大小
总结 前言 本文主要简单的介绍一下一维
数组
的使用方法。 一、通过下标使用 下标从0开始,依次递增。形式:
数组
名加下标。 与定义的...
关于
数组
的
大小
测定
数组
的
大小
一 结果: 二 结果: 三: 四 注意: 1:把二维
数组
可以看成一个一维
数组
来表示 2:二维
数组
的行数可以省略,但是列数不能省略(表示长度) 3:sizeof来...
C语言,
数组
的类型,
大小
C语言,
数组
的类型,
大小
前言
数组
可以存放很多元素,可是如何计算
数组
的
大小
呢? 一、
数组
的类型 int a[ 5 ] ={1,2,3,4,5};
数组
的类型:int [5], 去掉变量名,就是
数组
的类型,这就是5个int 类型元素的
数组
类型...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章