社区
C语言
帖子详情
怎样动态分配一个数组的长度??
yulin656
2009-11-11 10:42:25
开始不知道数据的长度,比如说求一个离散信号的极大值。怎么把求到的极大值放到一个数组中,要求数组的长度就是极大值的个数。
我这样写可以吗?
其中数组y中存放的是信号值,y1中想存放信号的极大值
y1=(double *)malloc(sizeof(double));
for(i=0;i<N-1;i++)
{
if(y[i+1]>y[i]&&y[i+1]>y[i+2])
{
y1[j++]=y[i+1];
}
}
...全文
281
21
打赏
收藏
怎样动态分配一个数组的长度??
开始不知道数据的长度,比如说求一个离散信号的极大值。怎么把求到的极大值放到一个数组中,要求数组的长度就是极大值的个数。 我这样写可以吗? 其中数组y中存放的是信号值,y1中想存放信号的极大值 y1=(double *)malloc(sizeof(double)); for(i=0;iy[i]&&y[i+1]>y[i+2]) { y1[j++]=y[i+1]; } }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zbnxiaonan
2009-11-12
打赏
举报
回复
用c++中的向量vector
或用new动态分配内存
vector 占有的内存会大一点
青葱岁月不可追
2009-11-12
打赏
举报
回复
[Quote=引用 2 楼 do_fork 的回复:]
符合C99标准的编译器可以这么做
C/C++ codeint size;
size= 求size();int signal_value[size];
[/Quote]
O(∩_∩)O~我无语了
这个就是最近很火的那个家伙?久仰
pehaps
2009-11-12
打赏
举报
回复
貌似按楼主的意思,只能realloc了!
Linux研究小卒
2009-11-12
打赏
举报
回复
先malloc
然后加个判断,如果大于,再relloc
或者
直接用STL里面的VECTOR
gunfeipeng
2009-11-12
打赏
举报
回复
你应该预先多分配点空间
ty2507
2009-11-12
打赏
举报
回复
先用malloc()开辟一定的空间,比如是5个double,每往数组里放一个元素就判断一下数组大小,当超过5个后每得到一个随机数就用relloc()再开辟一个double的空间
zengqi19890529
2009-11-12
打赏
举报
回复
不知道最初的数组长度?可否另写一个函数来计算你原来数组的的长度?然后将计算所得返回给realloc来解决扩容的问题!
藏羚羊
2009-11-12
打赏
举报
回复
如果是C++,可以用vector;如果是C的话链表可以用;也可以动态扩大数组。
动态扩大内存的办法是:再申请一个大的数组,然后把原来的数组赋给新申请的数组,然后再将新的值加入到新的数组中;可以写成一个函数,方便调用;
bowfnfje
2009-11-11
打赏
举报
回复
vector
Apple_Demo
2009-11-11
打赏
举报
回复
用C++中的向量,绝对方便。
yulin656
2009-11-11
打赏
举报
回复
谢谢了,我再想一下
Caballeroo
2009-11-11
打赏
举报
回复
[Quote=引用 2 楼 do_fork 的回复:]
符合C99标准的编译器可以这么做
C/C++ codeint size;
size= 求size();int signal_value[size];
[/Quote]
动态数组大小,C99标准,gcc就支持!
bjq19841220
2009-11-11
打赏
举报
回复
用realloc试试
The_facE
2009-11-11
打赏
举报
回复
那你只能用realloc扩充了,但是这样很麻烦,很可能原来的空间后面没有可扩展空间,就会另外开辟空间,再拷贝数据,再释放。
即使是C99的动态数组,也是需要分配前知道长度的。
xingzhe2001
2009-11-11
打赏
举报
回复
那就预申请一定空间,如果运行到某个时候发现空间不够了,就realloc
do_fork
2009-11-11
打赏
举报
回复
其实你应该学C++,用vector多省事
yulin656
2009-11-11
打赏
举报
回复
我是想把数据存放在连续的内存空间里面
xingzhe2001
2009-11-11
打赏
举报
回复
事先开辟大一点的,比如上面
y1=(double *)malloc(sizeof(double)*N);
如果数可能很多,那可以用列表这种数据结构来存放结果
昵称很不好取
2009-11-11
打赏
举报
回复
没怎么看明白,malloc不够用时,可以选用realloc扩大数组容量
do_fork
2009-11-11
打赏
举报
回复
符合C99标准的编译器可以这么做
int size;
size = 求size();
int signal_value[size];
加载更多回复(1)
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章