#include <iostream>
using namespace std;
int main()
{
int n;
cin >>n;
int a[n];
return 0;
}
之前好像有人和我说过这样创建数组的习惯不好,应该把n改成常量,但是我做题目的时候往往不需要开那么大呀,但是如果这个习惯确实是不好的,能说说为什么吗?以及开成一个常量有什么好处吗?
这种方式不是标准c++的方式,g++支持,vc不支持。
可以改为
cin >>n;
int *a=new int[n];
或者
int *a=(int *)malloc(n*sizeof(int));
比如你开一个10大小的数组,如果你访问到11就会出错,而你的n却是可能变化的,于是你可能会无法得知数组的真实大小.导致出错.
你需要开一个不定大小的数组,可以用动态分配内存的方式来创建数组
如
int*a=(int*)malloc(n*sizeof(int)
你这样写就是在写一个可变长度数组,也就是说在没有输入n的情况下系统就已经对函数进行了编译,系统遇到数组a要分配一定的内存;而此时n还没有输,所以系统不知该分配多大的内存给数组;你可以先给其分配一定的内存,或者使用 C++ 的 vector 容器,这样来实现。