错误动态数组
Posted
技术标签:
【中文标题】错误动态数组【英文标题】:Error dynamic array 【发布时间】:2014-07-24 06:12:20 【问题描述】:在堆栈中创建不会产生任何错误 在堆中动态创建会产生错误。
int a;
cin>>a;
int B[a]; // OK
int A[] = new int[a]; // error: variable-sized object 'A' may not be initialized
为什么第二个会导致错误?
【问题讨论】:
int B[a];
也不是合法的 C++。这是一个编译器扩展。
@T.C.第一个没有错误
int * A = new int[a];
应该没问题。
@songyuanyao 我知道,但是为什么不在STACK?
因为new
返回一个指针。
【参考方案1】:
B[a] 是非法的。数组大小需要在编译时知道。 'A' 的类型应该是 int* 而不是 int[]。
int* A=new int[a];
【讨论】:
什么?诠释一个;辛>>一个;诠释 B[a]; // OK B[1] = 45; cout @AAAser 这是非法的。 这是一个编译器扩展。但重点是new
返回一个指针。
@AAAser 我意识到 C++ 就是那样令人困惑,因为函数参数列表中的int[]
实际上是一个指针。但在这种情况下它不是。以上是关于错误动态数组的主要内容,如果未能解决你的问题,请参考以下文章