0
ポインタを使って配列の最高値のインデックスを見つけて印刷する必要があります。私の教授は、以下の定義された整数だけで行うことができると言った(カウンターや他の貴重品はない)。Cのポインタを使って配列内の最大値のインデックスを見つける/印刷する方法
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int array[100], size, *MAX, *pi;
srand(time(NULL));
MAX = array;
printf("Insert array size:\n");
scanf("%d", &size);
for(pi=array; pi<array+size; pi++)
{
*pi = (rand()%100) + 1;
}
printf("\nArray elements:\n");
for(pi=array; pi<array+size; pi++)
printf("%d\t", *pi);
for(pi=array+1; pi<array+size; pi++)
if(*pi>*MAX)
{
MAX = pi;
}
printf("\n\nMax is %d.", *MAX);
}
新しい最大値の*ポインタ*を記録し、同時に新しい最大値を記録します。そのインデックスはポインタ 'pimax-niz'の減算になります。しかし残念なことに 'niz'はあなたのコードでは分かりません。 –
MAXは配列の最大値を指し、配列の先頭を指すポインタがあり、メモリは連続しているため、配列ポインタからMAXポインタを減算して格納されたデータ型のサイズで割ります:(MAX-array)/ sizeof(int) – Iverelo
@Ivereloはサイズで除算しません。ポインタ演算がそれを処理します。私の最初のコメント「MAX」の中のOopsは、既にその値ではなく、max要素へのポインタです。そのインデックスは 'MAX - array'ですが' niz'は未定義です。 –