在c语言编程软件visual c++,输入一个数作为数组长度。为什么总是发生错误?看下面的代码。

#include <stdio.h>
int main()
{
int i, T, k;
scanf("%d", &T);
int year[T];
int month[T];
int day[T];

c语言静态数组的长度不能使用变量,你使用了变量T,所以不对。
静态数组的长度就是编译时必须知道的,但是很明显的你这里必须运行等用户输入才能决定,所以不对。追问

我输入了T的的值,scanf("%d", &T);
再声明的int year[T];
为什么不行?
我的代码如下:(我在c- free 5.0软件调试没有错误,能运行。在visualc++中发生错误, ?)
#include
int main()
{
int T;
scanf("%d", &T);
int year[T];

追答

这只能说编译器不同而造成的不同。我不懂free怎么处理的。
老式编译器的情况,就像我说的那样,静态数组编译时必须确定其长度。

如果这样都可以,还要动态分配空间干嘛??多此一举吗???写着还麻烦??

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-27
你少个“}”
第2个回答  2011-11-27
我输入了T的的值,scanf("%d", &T);
再声明的int year[T];
为什么不行?

输入是在编译之后的,而编译时就要求确定了T的值了。
所以不行的,要去建动态的

int main()

int T;
scanf("%d",&T);
int *year;
year=new int[T];
//其他的雷同
第3个回答  2011-11-27
三楼正解
相似回答