我确定它很小,但我一直收到一个关于我如何在初始化之前尝试使用它的初始化错误。
#include <iostream>
using namespace std;
int main()
{
int* ordered;
ordered[0] = 5;
cout << ordered[0];
return 0;
}
额外的问题,我可以*ordered
用来访问开始地址并循环使用数组*ordered++
吗?
我确定它很小,但我一直收到一个关于我如何在初始化之前尝试使用它的初始化错误。
#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
。
问题是没有与ordered
. 你有一些选择:
ordered
使用new[]
std::vector<int>
a如果您使用,vector
您可以在开始时分配内存或使用它的push_back
方法,这将导致它根据需要增长。