怎样动态分配一个数组的长度??

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 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbnxiaonan 2009-11-12
  • 打赏
  • 举报
回复
用c++中的向量vector
或用new动态分配内存
vector 占有的内存会大一点
  • 打赏
  • 举报
回复
[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)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧