C++中的静态数组和动态数组有什么区别?
我必须为我的班做一个任务,它说不要使用静态数组,只使用动态数组.我看过这本书和网上,但我似乎并不理解.
我认为静态是在编译时创建的,并且在运行时是动态的,但我可能会误以为内存分配.
你能解释一下C++中静态数组和动态数组之间的区别吗?
我已经使用C++几年了,今天我看到了一些代码,但这怎么能完全合法呢?
int main(int argc, char **argv)
{
size_t size;
cin >> size;
int array[size];
for(size_t i = 0; i < size; i++)
{
array[i] = i;
cout << i << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据海湾合作委员会编制.
如何在没有new或没有运行时确定大小malloc?
只是为了仔细检查,我用谷歌搜索了一些和我的所有类似的代码声称存储大小错误.
甚至Deitel的C++如何编程p.共同编程错误4.5下的261个状态:
只有常量可用于声明自动和静态数组的大小.
给我看.
如果我有以下两个陈述:
// OK
const int ARRAYSIZE = 5;
int x[ARRAYSIZE];
// NOT OK
int ARRAYSIZEBAD = 5;
int y[ARRAYSIZEBAD];
Run Code Online (Sandbox Code Playgroud)
我不用-pedantic-errors标志编译...为什么第二个例子是坏事?在什么情况下,最好使用new运算符进行动态分配?