小さなことだと思いますが、初期化する前に使用しようとすると、初期化エラーが発生し続けます。
#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;
std::vectorC++ では、動的に割り当てられた配列の代わりに を使用する方がはるかに優れていますnew []。簡単に言えば、間違いにくいstd::vectorです。
問題は、 に関連付けられているメモリがないことorderedです。いくつかのオプションがあります:
orderedいくつかのメモリを使用に割り当てますnew[]std::vector<int>にを使用する場合vectorは、最初にメモリを割り当てるか、必要に応じてメモリを拡張するpush_backメソッドを使用できます。