This question already has answers here:
In C++ books, array bound must be constant expression, but why the following code works?
(2 个回答)
8年前关闭。
我从这里阅读了这一段:http://www.cplusplus.com/doc/tutorial/dynamic/
但是我的这段代码工作得很好:
这是否意味着数组是在动态内存中创建的?或者它是在静态内存中创建的,但它的大小仍然在运行时确定?
(2 个回答)
8年前关闭。
我从这里阅读了这一段:http://www.cplusplus.com/doc/tutorial/dynamic/
但是我的这段代码工作得很好:
int number;
cin>>number;
int myArray[number];
cout<<sizeof(myArray)/sizeof(myArray[0])<<endl;
cout<<sizeof(myArray)<<endl;
这是否意味着数组是在动态内存中创建的?或者它是在静态内存中创建的,但它的大小仍然在运行时确定?
最佳答案
正如我在评论中指出的那样,但这里有更多细节。
在标准 C++ 中,必须在编译时知道数组的大小。在您的示例中,情况并非如此。您的代码编译是因为您(大概)使用启用了 variable length array
扩展的 gcc。
正确设置警告级别将阻止此代码编译。
关于c++ - 静态内存中数组的大小可以在 C++ 运行时更改吗?怎么来的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13545489/
10-12 16:01