最大値要素の添字(インデックス)を返す関数 arrayMaxValueIndex
を定義する前に,まず,その仕様を書き下しておく
この仕様に従って,関数を定義する.
int arrayMaxValueIndex(int array[], int n)
{
int i, maxi;
maxi = 0;
for (i = 1; i < n; i++) {
if (array[maxi] < array[i]) maxi = i;
}
return maxi;
}
n は配列 array の宣言時のサイズではなく,
実際に使っている(データが入っている)要素の個数であることに注意する.
使用者が誤って n に配列 array
のサイズ以上の数値を指定した場合,この関数は正常には動かない.
この関数の使用例を書いておく.
#include <stdio.h>
int arrayMaxValueIndex(int array[], int n)
{
int i, maxi;
maxi = 0;
for (i = 1; i < n; i++) {
if (array[maxi] < array[i]) maxi = i;
}
return maxi;
}
main()
{
int a[] = {1, 3, 4, 3, 5, 3, 2, 2};
printf("%d\n", arrayMaxValueIndex(a, 5));
}
4
ここで,配列を関数の引数に引き渡したときの注意について述べておく.