为什么有的编译器支持cin>>n;int a[n];有的不可以?
大问题已经写了,还想问一下,有时候会有这样的情况发生:比如需要定义一个指定大小的数组。在Dev-C++,Code::Blocks里可以,但是在VS里面就不行,如果不可以这...
大问题已经写了,还想问一下,
有时候会有这样的情况发生:
比如需要定义一个指定大小的数组。
在Dev-C++,Code::Blocks里可以,
但是在VS里面就不行,
如果不可以这样有解决的办法么? 展开
有时候会有这样的情况发生:
比如需要定义一个指定大小的数组。
在Dev-C++,Code::Blocks里可以,
但是在VS里面就不行,
如果不可以这样有解决的办法么? 展开
1个回答
展开全部
追问
有一点晕,可以仔细讲解么?(我也是新人啊)会采纳的
追答
int a[n]; 分配n个int类型的连续内存,int的长度是sizeof(int),n个就是n*sizeof(int)
在不支持的情况下,就是自己分配内存
其中分配内存有两中版本:(c) malloc、free和(c++)new、delete。这是推荐malloc、free
分配n个int就是 malloc(n*sizeof(int)),malloc返回void*,指向分配好的内存,然后再用int*转类型就可以了。
结果就是:
int* a = (int*)malloc(n*sizeof(int));
自己分配的内存,要自己释放,当用完数组a后,要free(a)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询