c++中,int a = 3; int array[a];为什么会报错呢?虽然a不是常量,但我已初始化了

c++中, int a = 3; int array[a];为什么会报错呢?虽然a不是常量,但我已初始化了.编译器在编译时就可以确定数组大小了

当然不行了,因为像int array[10]是建一个静态数组,其中的10不能是变量,虽然a已经赋值,但由于我在以后的进程中仍然能对a赋值,C++是绝对不允许这样的事发生的,你可以在程序开头定义一个常量比如:
#define a=10;或const int a = 10; 这样a在一般的情况下就不能改变了。
如果你想创建一个能改变数组个数的数组,你可以创建一个动态数组。比如int a;cin>>a;int *p=new int array[a];这样你创建了一个可包含a个元素的数组,而且以后还可以添加或缩减。不过在你创建完毕之后一定要加delete []p;否则内存不能释放了。
不过本人认为还是用vector或deque好,两者非常类似,懂其中一个就理解令一个了。
在头文件中加#include<vector>或#include<deque>就可以用了
vector<int>a;
int n;
while(cin>>n)
a.push_back(n);
这样你的数据就被“一个一个”扩充到数组a[]里面了,具体资料你可以查一些资料,很多的书和网页上都有介绍,总之vector的功能很强大,建议掌握。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-04
C++中数组的大小是在编译时就确定了的,而变量的值则是在运行时才能计算出来的(因为变量的值是可以任意改变的,编译时是不可能知道的),因此用变量作为数组的大小自然会产生编译错误。
要动态的定义数组可以用 new :
int a = 3;
int* array = new int[a];
不过使用完成后要记得delete.
第2个回答  2008-01-03
C++规定数组大小(也就是[]中的数)不能用变量,这是为了防止造成内存管理紊乱,因为变量很难保证它在某一时刻是确定的本回答被提问者采纳
第3个回答  2008-01-04
const int size = 10;
int arr[size];
就可以。

size要是const常量。
相似回答