関数を使って配列内の最大値と最小値を探したいと思います。ここに私のコードだ:配列の中で最大の数を見つけると、最大のint値が返されます。
#include <stdio.h>
void findLowHigh(int* numbers, int size, int* min, int* max) {
for(int i = 0; i < size; i++) {
if (*min > numbers[i]) *min = numbers[i];
else if (*max < numbers[i]) *max = numbers[i];
}
}
int main() {
printf("##### Find lowest and highest number in collection #####");
printf("\n Array checked: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]");
int min, max;
int numbers1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
findLowHigh(numbers1, 10, &min, &max);
printf("\nMin: %d\nMax: %d", min, max);
printf("\n Array checked: [ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]");
int numbers2[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
findLowHigh(numbers2, 10, &min, &max);
printf("\nMin: %d\nMax: %d", min, max);
return 0;
}
と出力があります:
##### Find lowest and highest number in collection #####
Array checked: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
Min: 1
Max: 32767
Array checked: [ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
Min: 1
Max: 32767
Process finished with exit code 0
私はポインタに何か問題があると推測しているが、それは何ですか?
デバッガを使用してコードをステップ実行する方法を学ぶ必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。さらに読む:** [小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
あなたの変数は初期化されていないので、設定されていますあなたのケースでは32767であるunitialisedの値になりますので、maxがあなたの配列のあなたの値よりも小さいことは決してありません。あなたは '0'のような賢明な値か、 – EdChum
のどちらの初期値を低くして初期化するべきですか? – RyanP