我已经创建了这段代码来解决一些可行的在线答案,但是我想知道以这种方式分配动态内存是否可以。在整个循环中连续定义数组大小。可以吗
#include <iostream>
using namespace std;
int main ()
{
int sum=0;
int x;
int *ptr = new int[x];
ptr[0]=1;
ptr[1]=2;
int max = 4000000;
int i=2;
while (ptr[i-2]<max)
{
ptr[i]=ptr[i-1]+ptr[i-2];
i++;
}
// now we use (i -1) as the last array fill b/c i is bigger than 4 000 000
// sort with val % 2 == 0 !modulus!
for (int j=0; j<(i-1); j++) {
if (ptr[j]%2==0) {
sum+=ptr[j];
}
}
delete[] ptr;
cout<<sum;
return 0;
}
最佳答案
不,这不行,因为int x;
未初始化并且可能包含一些垃圾。
编辑。
从评论到这篇文章。
1)使用std::vector<int>
代替C数组。
2)如果不想使用向量-添加对元素进行计数的循环,然后为数组分配内存并使用它。
3)如果第一种情况和第二种情况无法接近,则使用较大尺寸的静态数组。
关于c++ - 分配非常数数组是否合法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11553858/