注册 登录
编程论坛 C图形专区

如何在程序运行时定义数组的大小

beyondabcd 发布于 2007-07-19 20:04, 1271 次点击

我想数组的大小可以在程序运行时定义,可我写了,不行呀,像这样的情况怎么儿解决呀?
void fileshow(int z)
{ int num[z],j;
for(j=0;j<z;j++)
printf("%d\n",num[j]);
}


main()
{ int i;
scanf("%d", &i);
fileshow(i);
getch();
}
出现错误说
错误 cc.c 2: 需要用常量表达式在 fileshow 函数中
错误 cc.c 2: 结构体或数组的大小未知在 fileshow 函数中

5 回复
#2
kk48682007-07-19 20:07
动态申请内存,请用calloc或者malloc
具体用法自己找
记得使用完毕要用free释放掉
#3
beyondabcd2007-07-19 20:10
dos下一次只能申请64K的,我需要的空间也不够用的
#4
一笔苍穹2007-07-19 20:25
假设TC支持C99规范(虽然这是不现实的),能让你申请边长数组,也没有意义啊,TC的寻址限制不仅是在动态分配空间上,数组一样的有这种限制啊。但动态分配允许你随时将不用的内存free掉,这无疑是更节省的。
要动态申请超过64k的空间,可以使用大模式或紧凑模式。或者在小模式或中模式下使用farmalloc申请而不是malloc
#5
beyondabcd2007-07-22 16:35
我考,这么复杂呀!!
#6
一笔苍穹2007-07-22 18:47
我只是多说了一点,简单点讲就是你把malloc替换成farmalloc,free替换成farfree,指针也同样改成far型的
就这样,可以申请超过64KB的内存。但也不过几百KB而已,没什么意思。

[此贴子已经被作者于2007-7-22 18:53:25编辑过]

1