私はセグメンテーションフォルトを生成するプログラムに取り組んでおり、なぜそれを理解できません。 "最小"と "最大"変数からポインタ宣言を取り除いてポインタレス整数として使用すると、プログラムはうまく動作します。このポインタと整数の比較がセグメンテーションフォルトを生成するのはなぜですか?
ただし、ポインタを使用しようとすると問題が発生し、セグメント化エラーが発生します。おそらくこれはおそらく非常に簡単で十分に対処された問題であることを認識していますが、他の同様の問題を見てコードを理解しようとしました。私はまだ私の問題の解決策を見つけていない。何がうまくいかないのか分かりません。
これはコード問題を発生させる(完全なソースへのリンクは、以下である)である。
cout << "This is the array containing the random numbers:\n";
for(int *i=numbers; i != numbers + arrLength; i++) {
if((*i % 200) == 0 && *i > 200) {
cin.get();
cout << endl;
}
else
cout << *i << ' ';
// Get statistics
// In the continuation of getting, lowest, largest then adding to sum.
// THIS PART IS MAKING SEGMENTATION FAULT.
if(*i < *lowest)
lowest = i;
if(*i > *largest)
largest = i;
sum += *i;
}
ユーザ入力後に宣言されている古い基準にi
可変ポイント:
cout << "You entered: " << arrLength << "\n\n";
int *numbers = new int[arrLength];
// Fill the array with random numbers
srand(time(NULL));
int x;
int range = 5001;
for(int index=0; index<arrLength; index++){
*(numbers + index) = rand() % range;
x = rand() % 2;
if(x > 0) {
*(numbers + index) = *(numbers + index) * -1;
}
}
ください私のプログラムがうまくいかず、何が間違っているのかを説明してください。
if(*i < *lowest)
lowest = i;
if(*i > *largest)
largest = i;
完全なソース:この問題に関する事前の http://pastie.org/2105963
おかげで私が言ったように、以前のすべてのものは除いて動作します!
を? – knittl
@knittl:これはおそらくC++の宿題で、教授はポインタ計算を教えています。 –