sizeof()
Maple(Arduino STM32)のsizeof演算子は、指定された型(*1)の値を格納するのに必要なバイト数を返します。 これは、intのような通常の数値型です。 structやunionのように、もっと複雑なものになる可能性があります。 sizeofの引数が配列の場合、配列が占める合計バイト数を返します。
一般的な構文は次のようになります。
code:sample.ino
sizeof(type)
sizeof(var)
利用例
sizeof演算子は、プログラムの他の部分を破壊することなく配列のサイズを変更できるように便利な配列(文字列など)を扱う場合に便利です。
このプログラムは、一度に1文字ずつテキスト文字列を出力します。 テキストフレーズを変更してみてください:
code:sample2.ino
char myStr[] = "this is a test";
int i;
void setup() {
Serial.begin(9600);
}
void loop() {
for (i = 0; i < sizeof(myStr) - 1; i++) {
Serial.print(i, DEC);
Serial.print(" = ");
Serial.println(myStri, BYTE); }
}
sizeofは合計バイト数を返します。 intなどのより大きな変数型の場合、forループは次のようになります。
code:sample3.ino
for (i = 0; i < (sizeof(myInts)/sizeof(int)) - 1; i++) {
// do something with myIntsi }
脚注
*1: 技術的には(そして学者風には)、sizeofはcharがメモリ内で占めるビット数の倍数を返します。 しかし、Maple(これはほとんどのC ++の実装になります)では、charは8ビット= 1バイトを占めます。 しかし、すべてのC ++標準の保証は、charが少なくとも8ビットを占有するということです。
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。