当前位置: 代码迷 >> C语言 >> [求助]关于变量长度数组的问题
  详细解决方案

[求助]关于变量长度数组的问题

热度:86   发布时间:2007-08-09 15:04:21.0
[求助]关于变量长度数组的问题

#include <stdio.h>

void main()
{
int i,numsOfArray;

printf("How many members do you want:(between 1 and 70)?");
scanf("%i",&numsOfArray);

if(numsOfArray < 1 || numsOfArray > 70)
{
printf("Wrong enter!\n");
return;
}

unsigned int array[numsOfArray];

for(i = 0; i < numsOfArray; i++)
array[i] = i;
}
这是一个关于变量长度数组的问题,简单的写了这个程序,用Microsoft visual C++ 6.0 编译,但是编译通不过。
提示如下:
expected constant expression
cannot allocate an array of constant size 0
'array' : unknown size


MS不支持用变量来初始化数组的大小,还是这个编译器不支持,请高手指点

搜索更多相关的解决方案: 变量长度  numsOfArray  int  

----------------解决方案--------------------------------------------------------
所有的编译器都不支持!!数组的长度是必须指定的;
a[const int];
----------------解决方案--------------------------------------------------------

应该是编译器的问题,有的编译器是支持的,但是不知道哪个,我只有Microsoft Visual

还有复合字面量的问题
http://bbs.bc-cn.net/viewthread.php?tid=146450&extra=&page=1#274661
我的编译器也编译不过


----------------解决方案--------------------------------------------------------
传说C++是有专门的变长数组的
呵呵,我也遇到了这个问题,所以查过,网上有说C99已经支持变长数组了,不过我现在用的编译器似乎还不支持
转载网上的解决方法:example: int *p;int n;(省略键盘输入n相关语句);p=malloc(n*sizeof(int));{你的代码段}free(p//这里不知参数对不对?忘了);
就这样,我测试通过。
很巧吧,其实在谭浩强的链表一章里有这个思想,但是他强调定长数组就是不对!
----------------解决方案--------------------------------------------------------
编译器不会支持你这样做的,这个数组的长度必须在编译的时候就知道,而不是运行的时候才知道。

想要实现变长的数组,那就用malloc(或new)动态的开辟存储空间。
----------------解决方案--------------------------------------------------------

动态的要用链表吧


----------------解决方案--------------------------------------------------------
unsigned int*array = (unsigned int*) malloc(sizeof(unsigned int)*numsOfArray);



unsigned int*array = new unsigned int[numsOfArray]

[此贴子已经被作者于2007-8-22 17:39:22编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案