0

我确定它很小,但我一直收到一个关于我如何在初始化之前尝试使用它的初始化错误。

#include <iostream>
using namespace std;
int main()
{
    int* ordered;

    ordered[0] = 5;
    cout << ordered[0];
    return 0;
}

额外的问题,我可以*ordered用来访问开始地址并循环使用数组*ordered++吗?

4

2 回答 2

5
int* ordered;
ordered[0] = 5;

ordered是一个未初始化的指针。它指向任何随机地址。取消引用这样的指针会导致未定义的行为,并且很可能会使您的程序崩溃。
为了能够用这个指针做一些有意义的事情,它需要指向一些有效的内存区域。你可以这样做:

int *ordered = new[x];

现在,ordered指向一个足以容纳x整数的内存区域。但是,您必须记住在使用后释放内存:

delete []ordered;       

在 C++ 中,您最好使用std::vector而不是动态分配的数组,因为您不必手动管理使用new []. 简单地说,很难出错std::vector

于 2013-02-08T08:48:42.220 回答
4

问题是没有与ordered. 你有一些选择:

  • 分配一些内存来ordered使用new[]
  • 改用std::vector<int>a

如果您使用,vector您可以在开始时分配内存或使用它的push_back方法,这将导致它根据需要增长。

于 2013-02-08T08:45:40.037 回答