为什么有的编译器支持cin>>n;int a[n];有的不可以?

大问题已经写了,还想问一下,有时候会有这样的情况发生:比如需要定义一个指定大小的数组。在Dev-C++,Code::Blocks里可以,但是在VS里面就不行,如果不可以这... 大问题已经写了,还想问一下,
有时候会有这样的情况发生:
比如需要定义一个指定大小的数组。
在Dev-C++,Code::Blocks里可以,
但是在VS里面就不行,
如果不可以这样有解决的办法么?
展开
 我来答
木有想到GK5ym
推荐于2016-10-05 · TA获得超过208个赞
知道小有建树答主
回答量:207
采纳率:90%
帮助的人:126万
展开全部
这是动态分配数组大小,有的编译器支持有的不支持。
通用的话是
cin >> n;
int* a = (int*)malloc(n*sizeof(int));

最后用过后要释放 free(a)
追问
有一点晕,可以仔细讲解么?(我也是新人啊)会采纳的
追答
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)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式