我确定它很小但是我一直在初始化错误,因为我在初始化之前一直尝试使用它。
#include <iostream>
using namespace std;
int main()
{
int* ordered;
ordered[0] = 5;
cout << ordered[0];
return 0;
}
加分问题,我可以使用*ordered
访问起始地址并使用*ordered++
循环遍历数组吗?
答案 0 :(得分:5)
int* ordered;
ordered[0] = 5;
ordered
是一个未初始化的指针。它指向任何随机地址。取消这样的指针会导致 未定义的行为 ,并且很可能会导致程序崩溃。
为了能够用这个指针做一些有意义的事情,它需要指向一些有效的内存区域。你可以这样做:
int *ordered = new[x];
现在,ordered
指向一个足以容纳x
整数的内存区域。但是,您必须记住在使用后释放内存:
delete []ordered;
在C ++中,使用std::vector
代替动态分配的数组要好得多,因为您不必使用new []
附带的手动内存管理。简单地说,std::vector
很难出错。
答案 1 :(得分:4)
问题是没有与ordered
相关的记忆。你有一些选择:
ordered
new[]
分配一些内存
std::vector<int>
代替 如果你使用vector
,你可以在开头分配内存,或者使用push_back
方法,这样可以根据需要增加内存。