Arduino:Справочник языка Arduino/sizeof(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{#setlogo:ArduinoCommunityLogo.png}}
{{Arduino панель перехода}}
{{Arduino панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
Строка 10: Строка 9:
==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
sizeof(переменная)
sizeof(переменная)
</syntaxhighlight>
</syntaxhighlight>
Строка 16: Строка 15:
==Параметры==
==Параметры==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
переменная — переменная любого типа или массив (например, int, float, byte)
переменная — переменная любого типа или массив (например, int, float, byte)
</syntaxhighlight>
</syntaxhighlight>
Строка 26: Строка 25:
Ниже — программа-образец, которая по очереди выводит символы, имеющиеся в строке. Вместо '''«this is a test»''' можно поставить любую другую фразу.
Ниже — программа-образец, которая по очереди выводит символы, имеющиеся в строке. Вместо '''«this is a test»''' можно поставить любую другую фразу.
   
   
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
Char myStr[] = "this is a test";
Char myStr[] = "this is a test";
int i;
int i;
Строка 47: Строка 46:
Обратите внимание, что '''sizeof''' возвращает суммарное число байтов. Поэтому для переменных, которые могут содержать большое количество байтов, цикл [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]] будет выглядеть примерно так, как показано ниже. Также имейте в виду, что правильным образом отформатированная строка должна заканчиваться символом '''NULL''', которому в '''ASCII'''-таблице соответствует значение '''«0»'''.
Обратите внимание, что '''sizeof''' возвращает суммарное число байтов. Поэтому для переменных, которые могут содержать большое количество байтов, цикл [[Arduino:Справочник языка Arduino/Управляющие операторы/for|for]] будет выглядеть примерно так, как показано ниже. Также имейте в виду, что правильным образом отформатированная строка должна заканчиваться символом '''NULL''', которому в '''ASCII'''-таблице соответствует значение '''«0»'''.


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
for (i = 0; i < (sizeof(myInts)/sizeof(int)) - 1; i++) {
for (i = 0; i < (sizeof(myInts)/sizeof(int)) - 1; i++) {
   // делаем что-либо с myInts[i]
   // делаем что-либо с myInts[i]
Строка 54: Строка 53:


=См.также=
=См.также=


=Внешние ссылки=
=Внешние ссылки=


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}


[[Категория:Справочник языка Arduino]]
[[Категория:Справочник языка Arduino]]

Текущая версия от 11:25, 8 июля 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция sizeof[1]

Эта функция возвращает количество байтов в переменной или массиве.

Синтаксис

sizeof(переменная)

Параметры

переменная  переменная любого типа или массив (например, int, float, byte)

Пример

Функция sizeof удобна в работе с массивами (вроде строк) — с ее помощью удобно менять размер массива, при этом не вредя другим частям программы.

Ниже — программа-образец, которая по очереди выводит символы, имеющиеся в строке. Вместо «this is a test» можно поставить любую другую фразу.

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.write(myStr[i]);
    Serial.println();
  }
  delay(5000); // замедление программы
}

Обратите внимание, что sizeof возвращает суммарное число байтов. Поэтому для переменных, которые могут содержать большое количество байтов, цикл for будет выглядеть примерно так, как показано ниже. Также имейте в виду, что правильным образом отформатированная строка должна заканчиваться символом NULL, которому в ASCII-таблице соответствует значение «0».

for (i = 0; i < (sizeof(myInts)/sizeof(int)) - 1; i++) {
  // делаем что-либо с myInts[i]
}

См.также

Внешние ссылки