最大値要素の添字(インデックス)を返す関数 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
ここで,配列を関数の引数に引き渡したときの注意について述べておく.