dポイントプレゼントキャンペーン実施中!

int test = sizeof(h)/sizeof(h[0]);
上の式だと4/4で1になってしまい要素数を取得する事ができません
どのようにすればよいのでしょうか?

A 回答 (2件)

関数の引数に要素数を追加するか、決めることができるのなら「この値が出たらデータ終了」という値を決めておいて配列の最後に入れるかしなさい。



多分あなたがやりたいのはこういうことでしょうが、C言語では引数で渡された配列のサイズを知る方法はありません。

int calc_array_size(int h[]);

int main(int argc, char** argv)
{
int h[] = {1, 2, 3};
int test;

/* この計算で配列のサイズが取れるので、…… */
test = sizeof(h)/sizeof(h[0]);
printf("at main() : %d\n", test);

/* ……上と同じ計算をする関数を作ってみたけど、計算結果がおかしいです。 */
printf("at main() : %d\n", calc_array_size(h));

return 0;
}

int calc_array_size(int h[])
{
int test = sizeof(h)/sizeof(h[0]);
return test;
}

この回答への補足

自己解決しました
test->Length
で要素数を取得できるようです

補足日時:2012/05/04 04:50
    • good
    • 0

上記1行だけではどなたも回答できないでしょう。



配列の定義を含めた前後必要分の行数がどうなっているのか、見てみないと分かりません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!