怎么在C语言中重新定义数组的长度

geniusmali 2003-12-13 05:09:25
比如,int a[],这时我需要重新定义a数组的长度为10,怎么定义?
...全文
1004 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
glacierrr 2003-12-14
  • 打赏
  • 举报
回复
静态数组是不能改变长度的,只能用动态数组了。
关于recalloc,请看
http://expert.csdn.net/Expert/topic/2498/2498827.xml?temp=.6729547
zhangfjj 2003-12-13
  • 打赏
  • 举报
回复
我想应该还在,可以编个小程序测试一下呀。
binariman 2003-12-13
  • 打赏
  • 举报
回复
我插一句,如果用realloc那原来存在该空间的数据还在不在,如果是被覆盖了那就没意思了
应该是动态生长的,像vector一样
sboom 2003-12-13
  • 打赏
  • 举报
回复
Reallocate memory blocks.

void *realloc( void *memblock, size_t size );

zhangfjj 2003-12-13
  • 打赏
  • 举报
回复
只能使用动态存储管理函数。
其中有一个recalloc()的函数,用来对已使用malloc()、calloc()函数分配的存储空间大小进行改变,即重新分配。其原型是:
void * recalloc(void *ptr,unsigned int size)
ptr指向原来分配的存储空间
size是改变后存储空间的大小。
FormatQuickly 2003-12-13
  • 打赏
  • 举报
回复
a = malloc(length*sizeof(int));
calloc处也可以换成上一句

两句的区别是
calloc 为每个数组元素初始化为 0
而malloc不初始化
FormatQuickly 2003-12-13
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <malloc.h>


int main()
{
int *a;
int i =0;
int length;
printf("Input the length :\n");
scanf("%d",&length);
a = (int*)calloc(length,sizeof(int));
for(i=0;i<length;i++)
{
a[i] = i;
printf("%d\t",a[i]);
}
return 0;
}

70,037

社区成员

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

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