定义
定义一维数组的一般格式为
类型标识符 数组名[常量表达式];
例如: int a[10];
问题
很多人写成这样:
int n;
cin>>n;
int a[n];
这个写法已经明确,是错的,但编译能通过。
解释
首先,这不是 C++ 标准。
这样定义的数组,它的空间在栈上。重要的事情说两遍,在栈上 在栈上,不在堆上。所以能分配的空间有限,Linux 系统的默认栈大小只有几 MB,如果你非要这么写代码,需要自己测试自己的算法能接受的最大数据范围是否会导致运行是错误,如果是,你可能需要调整栈空间或者改用其它内存分配方式。
如果代码只有你自己用,无所谓,就那样写吧。
如果是团队开发,以后可能还得换编译器编译,还是按标准的去写吧。
int n;
cin>>n;
int *p= new int[n];