我确定它很小,但我不断收到关于我如何在初始化之前尝试使用它的初始化错误。
#include <iostream>
using namespace std;
int main()
{
int* ordered;
ordered[0] = 5;
cout << ordered[0];
return 0;
}
奖金问题,我可以使用 *ordered
访问起始地址并使用 *ordered++
循环遍历数组吗?
最佳答案
int* ordered;
ordered[0] = 5;
ordered
是一个未初始化的指针。它指向任何随机地址。取消引用此类指针会导致未定义的行为,并且很可能会使您的程序崩溃。
为了能够用这个指针做一些有意义的事情,它需要指向一些有效的内存区域。您可以这样做:
int *ordered = new[x];
现在,ordered
指向一个足以容纳 x
整数的内存区域。但是,你必须记住在使用后释放内存:
delete []ordered;
在 C++ 中,您最好使用 std::vector
而不是动态分配的数组,因为您不必使用 new []< 附带的手动内存管理
。简单地说,std::vector
很难出错。
关于c++ - 无法创建动态整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768708/