第1个回答 2013-02-05
1.好像新版本的编译器支持这个的……我记不得了。
2.因为常量相当于是固定的,编译的时候就可以得到这个值的,然后编译的时候就可以直接弄出数组长度什么的……就算是有值的变量,编译器它也是不知道的。
3.如果对于不支持这个的编译器要用这样的方式,可以用指针:
int n = 5;
string* p;
p = new string[n];
delete[] p;
要访问第一个元素就*p,第二个就*(p+1)以此类推。
第2个回答 2013-02-05
因为定义数组时,分配空间是需要一个固定的值,来确定你所申请的空间的大小。
int n = 5;在编译的时候并没有给n赋值,变量是在栈中存在的,不是固定的值。
第3个回答 2013-02-05
你要申请一块内存,但是多大啊?系统该你多大呢?好比你买饭,你只告诉卖饭的师傅说你要吃饭,要买饭,你不说买什么,买多少,师傅怎么给你打饭啊??
别说你这了,就算初始化的时候你用变量都不行的。。
第4个回答 2013-02-05
string a[n];
前面的string 表示你的a[n];是什么样的数据,比如整型int,浮点float,字符char,
这是有限定的 教程上有写的
第5个回答 2013-02-04
因为你的编译器太古董了..........