C で固定長配列の要素数を取得するためには、
sizeof(ar) / sizeof(ar[0])
こうやって書くか、以下のように #define で定義しておいてから使ったりしていました。
#define ELEM_NUM (sizeof(ar) / sizeof((ar)[0]));
未だに上記のマクロを見かけることがあります。
昔から言われてますが、これらの問題点はポインタを渡しても計算出来てしまうことです。
int ar[100];
int* par = ar;
printf("%d", ELEM_NUM(par));
C++ なら、template という強力な武器があるので、そちらを使うべきでしょう。
template<class T, size_t N>
size_t elementof(T (&)[N])
{
return N;
}
int ar[100];
int* par = ar;
printf("%d", elementof(ar)); // 100 が表示される
printf("%d", elementof(par)); // コンパイルエラー
template を使うと、配列の要素数が簡単に手に入ります。
固定長配列用のスタティック関数群を作ってみると面白いかもしれませんね。