次のような配列のサイズを調べようとしています:
String days[3] = { "Mon", "Tue", "Wed" }; Serial.printf("Size of array: %2d\n", sizeof(days)); for (int i = 0; i < sizeof(days); i++) { Serial.print(days[i]); }
上記のコードの結果は36ですが、これは正しくありません。
そもそも配列のサイズがわからないことを考慮して、他にオプションはありますか?
コメント
- sizeof()はバイト数であり、要素の数ではありません。sizeof(array)/ sizeof(element)は要素の数を示します。
回答
いいえ、結果は正しいです。あなたはそれを誤って解釈しているだけです。静的に割り当てられた配列の要素数が必要な場合は、次を使用します。
sizeof(somearray) / sizeof(somearray[0])
コメント
- 間違ったトピックで投稿した場合、配列内の各文字列のサイズが異なる場合は、Ignacio Vazquez-Abramsの回答に従ってください。文字列の日数のように[] = {"月曜日"、"火曜日"、"水曜日"};ありがとう